को पार करने वाली मैं एक ASP.NET GridView जो स्तंभ है कि इस तरह लग रहे है है:ASP.NET GridView दूसरा शीर्ष लेख पंक्ति मुख्य शीर्ष लेख पंक्ति
| Foo | Bar | Total1 | Total2 | Total3 |
इसमें दो पंक्तियां कि तरह लग रहा है पर एक हेडर बनाने के लिए संभव है इस?
| | Totals |
| Foo | Bar | 1 | 2 | 3 |
प्रत्येक पंक्ति में डेटा अपरिवर्तित के रूप में यह सिर्फ करने के लिए बहुत हैडर निर्भर है और क्षैतिज स्थान कमी है कि ग्रिड तक ले जाता है जाएगा।
पूरे GridView मामले कि मायने रखती में sortable है। मैं कॉल किए गए "टोटल" कॉलम के लिए किसी प्रकार की कार्यक्षमता के लिए इरादा नहीं चाहता हूं।
संपादित करें:।
लेख नीचे दिए गए में से एक के आधार पर, मैं एक वर्ग जो GridView से विरासत और में दूसरे शीर्ष लेख पंक्ति कहते हैं बनाया
namespace CustomControls
{
public class TwoHeadedGridView : GridView
{
protected Table InnerTable
{
get
{
if (this.HasControls())
{
return (Table)this.Controls[0];
}
return null;
}
}
protected override void OnDataBound(EventArgs e)
{
base.OnDataBound(e);
this.CreateSecondHeader();
}
private void CreateSecondHeader()
{
GridViewRow row = new GridViewRow(0, -1, DataControlRowType.Header, DataControlRowState.Normal);
TableCell left = new TableHeaderCell();
left.ColumnSpan = 3;
row.Cells.Add(left);
TableCell totals = new TableHeaderCell();
totals.ColumnSpan = this.Columns.Count - 3;
totals.Text = "Totals";
row.Cells.Add(totals);
this.InnerTable.Rows.AddAt(0, row);
}
}
}
मामले में आप के लिए नए हैं एएसपी.नेट जैसे मैं हूं, मुझे यह भी इंगित करना चाहिए कि आपको
1) अपने वेब फॉर्म में इस तरह की एक लाइन जोड़कर अपनी कक्षा पंजीकृत करें:
<%@ Register TagPrefix="foo" NameSpace="CustomControls" Assembly="__code"%>
2) बदलें एएसपी: अपने पिछले मार्कअप में GridView foo के लिए: TwoHeadedGridView। बंद टैग को मत भूलना।
एक और संपादित करें:
आप कस्टम वर्ग बनाने के बिना यह कर सकते हैं।
बस इस तरह अपने ग्रिड के databound घटना के लिए एक ईवेंट हैंडलर जोड़ें:
protected void gvOrganisms_DataBound(object sender, EventArgs e)
{
GridView grid = sender as GridView;
if (grid != null)
{
GridViewRow row = new GridViewRow(0, -1,
DataControlRowType.Header, DataControlRowState.Normal);
TableCell left = new TableHeaderCell();
left.ColumnSpan = 3;
row.Cells.Add(left);
TableCell totals = new TableHeaderCell();
totals.ColumnSpan = grid.Columns.Count - 3;
totals.Text = "Totals";
row.Cells.Add(totals);
Table t = grid.Controls[0] as Table;
if (t != null)
{
t.Rows.AddAt(0, row);
}
}
}
कस्टम नियंत्रण का लाभ है कि आप अपने वेब प्रपत्र का डिज़ाइन दृश्य पर अतिरिक्त शीर्ष लेख पंक्ति देख सकते हैं। इवेंट हैंडलर विधि थोड़ा सा सरल है, यद्यपि।
अद्यतन जवाब मुझे बहुत मदद मिली है, समय निकालने के लिए धन्यवाद – Alex
यहाँ एक ही यह दस्तावेज़ के लिए - रिक्त स्थान को भरने – CResults
नोट के लिए धन्यवाद - मुझे पता चला मैं जोड़ने के लिए किया था 'row.TableSection = TableRowSection त्रुटि के बिना काम करने के लिए कोड के लिए .TableHeader' – CResults