टैग्स GridViewको रेंडर करने के लिए मुझे कैसे कंट्रोल मिलेगा <thead> <tbody>? मुझे पता .UseAccessibleHeadersहै कि <th>इसके बजाय इसे रखा जाता है <td>, लेकिन मुझे <thead>दिखने के लिए नहीं मिल सकता है।
टैग्स GridViewको रेंडर करने के लिए मुझे कैसे कंट्रोल मिलेगा <thead> <tbody>? मुझे पता .UseAccessibleHeadersहै कि <th>इसके बजाय इसे रखा जाता है <td>, लेकिन मुझे <thead>दिखने के लिए नहीं मिल सकता है।
जवाबों:
यह करना चाहिए:
gv.HeaderRow.TableSection = TableRowSection.TableHeader;
HeaderRowसंपत्ति हो जाएगा nullजब तक GridViewडेटा बाध्य कर दिया गया है, इसलिए जब तक डेटा बाइंडिंग कोड के ऊपर लाइन चलाने से पहले आ गई है प्रतीक्षा करना सुनिश्चित करें।
theadवह jQuery में इसका उपयोग करना है। हालांकि हेडर रेंडर करने के बाद tbodyउपलब्ध नहीं लगता है। मेरे मामले में क्या गायब हो सकता है?
मैं इस OnRowDataBoundघटना में उपयोग करते हैं :
protected void GridViewResults_OnRowDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.Header) {
e.Row.TableSection = TableRowSection.TableHeader;
}
}
GridViewके भीतर है UpdatePanelऔर एक async-postback किसी अन्य नियंत्रण के कारण होता है, तो OnRowDataBoundईवेंट को नहीं उठाया जाएगा, इसलिए इस उत्तर में कोड निष्पादित नहीं किया जाएगा, जिसके परिणामस्वरूप टैग के GridViewबिना रेंडर करने के लिए पुन: दावा किया जा रहा है <thead>... आह । इस मामले को लक्षित करने के लिए, कोड को ग्रिडव्यू के इवेंट हैंडलर में स्वीकृत उत्तर से अलग कर दें PreRender(बहुत कुछ असाल्वो के जवाब से पता चलता है)।
उत्तर में कोड पर Page_Loadया जाने की जरूरत है GridView_PreRender। मैंने इसे एक विधि में रखा, जिसे बाद में बुलाया गया Page_Loadऔर ए मिला NullReferenceException।
DataBoundइवेंट में भी डाल सकते हैं । grid.DataBound += (s, e) => { grid.HeaderRow.TableSection = TableRowSection.TableHeader; };
मैं ऐसा करने के लिए निम्न कोड का उपयोग करता हूं:
ifबयान मैं जोड़ा महत्वपूर्ण हैं।
अन्यथा (आप अपना ग्रिड कैसे प्रस्तुत करते हैं इसके आधार पर) आप अपवादों को फेंक देंगे:
तालिका में शीर्ष लेख, बॉडी और फिर पाद लेख के क्रम में पंक्ति अनुभाग होना चाहिए।
protected override void OnPreRender(EventArgs e)
{
if ( (this.ShowHeader == true && this.Rows.Count > 0)
|| (this.ShowHeaderWhenEmpty == true))
{
//Force GridView to use <thead> instead of <tbody> - 11/03/2013 - MCR.
this.HeaderRow.TableSection = TableRowSection.TableHeader;
}
if (this.ShowFooter == true && this.Rows.Count > 0)
{
//Force GridView to use <tfoot> instead of <tbody> - 11/03/2013 - MCR.
this.FooterRow.TableSection = TableRowSection.TableFooter;
}
base.OnPreRender(e);
}
thisवस्तु मेरे GridView है।
मैं वास्तव में अपने स्वयं के कस्टम नियंत्रण बनाने के लिए Asp.net GridView को ओवररोड करता हूं, लेकिन आप इसे अपने aspx.cs पृष्ठ में पेस्ट कर सकते हैं और कस्टम-ग्रिडव्यू दृष्टिकोण का उपयोग करने के बजाय नाम द्वारा ग्रिड दृश्य का संदर्भ दे सकते हैं।
FYI करें: मैंने पाद तर्क का परीक्षण नहीं किया है, लेकिन मुझे यह पता है कि हेडर्स के लिए यह काम करता है।
यह मेरे लिए काम करता है:
protected void GrdPagosRowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.TableSection = TableRowSection.TableBody;
}
else if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.TableSection = TableRowSection.TableHeader;
}
else if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.TableSection = TableRowSection.TableFooter;
}
}
यह वीएस2010 में आजमाया गया था।
एक फंक्शन बनाएं और अपने फंक्शन में उस फंक्शन को PageLoadइस तरह से इस्तेमाल करें:
समारोह है:
private void MakeGridViewPrinterFriendly(GridView gridView) {
if (gridView.Rows.Count > 0) {
gridView.UseAccessibleHeader = true;
gridView.HeaderRow.TableSection = TableRowSection.TableHeader;
}
}
PageLoadघटना है:
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack)
{
MakeGridViewPrinterFriendly(grddata);
}
}
मुझे पता है कि यह पुराना है, लेकिन, यहां मानक ग्रिडव्यू के लिए माइकटेवी के जवाब की व्याख्या है:
aspx पृष्ठ:
<asp:GridView ID="GridView1" runat="server"
OnPreRender="GridView_PreRender">
aspx.cs:
protected void GridView_PreRender(object sender, EventArgs e)
{
GridView gv = (GridView)sender;
if ((gv.ShowHeader == true && gv.Rows.Count > 0)
|| (gv.ShowHeaderWhenEmpty == true))
{
//Force GridView to use <thead> instead of <tbody> - 11/03/2013 - MCR.
gv.HeaderRow.TableSection = TableRowSection.TableHeader;
}
if (gv.ShowFooter == true && gv.Rows.Count > 0)
{
//Force GridView to use <tfoot> instead of <tbody> - 11/03/2013 - MCR.
gv.FooterRow.TableSection = TableRowSection.TableFooter;
}
}