सिर्फ यह जानना चाहता था कि ग्रिडव्यू खाली होने पर भी डेटा प्रविष्टि के लिए ग्रिडव्यू फ़ूटर दिखाने का सबसे अच्छा और आसान तरीका क्या है?खाली ग्रिड पर ग्रिडव्यू फ़ूटर दिखाएं?
उत्तर
अपने डेटा स्रोत को उस ऑब्जेक्ट के प्रकार पर सेट करें जिसे आप ग्रिड व्यू में बाध्य कर रहे हैं, रिक्त मानों से भरे एक ऑब्जेक्ट के साथ, फिर उस डेटारो को छुपाएं।
संपादित करें: आप एक datatable का उपयोग कर रहे के बाद से ...
DataTable dt = new DataTable();
// Define all of the columns you are binding in your GridView
dt.Columns.Add("AColumnName");
...
...
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
myGridView.DataSource = dt;
myGridView.DataBind();
अधिक सुंदर ढंग से .. GridView का विस्तार करने और एक ShowFooterWhenEmpty संपत्ति जोड़ सकते हैं ताकि आप कस्टम कोड हर जगह लागू करने के लिए नहीं है।
Imports System.Web.UI.WebControls
Imports System.ComponentModel
Namespace UI.WebControls
Public Class GridViewExtended
Inherits GridView
Private _footerRow As GridViewRow
<DefaultValue(False), Category("Appearance"), Description("Include the footer when the table is empty")> _
Property ShowFooterWhenEmpty As Boolean
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Browsable(False)> _
Public Overrides ReadOnly Property FooterRow As GridViewRow
Get
If (Me._footerRow Is Nothing) Then
Me.EnsureChildControls()
End If
Return Me._footerRow
End Get
End Property
Protected Overrides Function CreateChildControls(ByVal dataSource As System.Collections.IEnumerable, ByVal dataBinding As Boolean) As Integer
Dim returnVal As Integer = MyBase.CreateChildControls(dataSource, dataBinding)
If returnVal = 0 AndAlso Me.ShowFooterWhenEmpty Then
Dim table As Table = Me.Controls.OfType(Of Table)().First
Me._footerRow = Me.CreateRow(-1, -1, DataControlRowType.Footer, DataControlRowState.Normal, dataBinding, Nothing, Me.Columns.Cast(Of DataControlField).ToArray, table.Rows, Nothing)
If Not Me.ShowFooter Then
_footerRow.Visible = False
End If
End If
Return returnVal
End Function
Private Overloads Function CreateRow(ByVal rowIndex As Integer, ByVal dataSourceIndex As Integer, ByVal rowType As DataControlRowType, ByVal rowState As DataControlRowState, ByVal dataBind As Boolean, ByVal dataItem As Object, ByVal fields As DataControlField(), ByVal rows As TableRowCollection, ByVal pagedDataSource As PagedDataSource) As GridViewRow
Dim row As GridViewRow = Me.CreateRow(rowIndex, dataSourceIndex, rowType, rowState)
Dim e As New GridViewRowEventArgs(row)
If (rowType <> DataControlRowType.Pager) Then
Me.InitializeRow(row, fields)
Else
Me.InitializePager(row, fields.Length, pagedDataSource)
End If
If dataBind Then
row.DataItem = dataItem
End If
Me.OnRowCreated(e)
rows.Add(row)
If dataBind Then
row.DataBind()
Me.OnRowDataBound(e)
row.DataItem = Nothing
End If
Return row
End Function
End Class
End Namespace
सी # संस्करण http://stackoverflow.com/questions/994895/always-show-footertemplate-even-no-data/10891744#10891744 – Aximili
एक अन्य समाधान, "निशान" एक विशिष्ट मूल्य के साथ उस पंक्ति है, तो RowDataBound पर पंक्ति को छिपाने हमेशा अपने डेटा स्रोत में एक डमी पंक्ति जोड़ने के लिए है।
अधिक सटीक होना,
SELECT NULL AS column1, NULL AS column2,...,NULL AS columnN, 1 AS dummyRow
को आपकी क्वेरी के SELECT खंड, तो यूनिअन सभी पूर्ण बयान के अंत करने के लिए स्तंभ ", 0 dummyRow के रूप में" जोड़ने एक बार जब आप जगह में प्रश्न हैं (के सभी जो अपने SQLDataSource भीतर किया जा सकता है या अपने DAL वस्तु में, ग्रिड के लिए अपने कोड कुछ इस तरह दिखेगा:
Protected Sub MyGridView_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles MyGridView.RowDataBound
If (e.Row.RowType = DataControlRowType.DataRow) AndAlso (Not e.Row.DataItem Is Nothing) AndAlso (CInt(e.Row.DataItem("dummyRow")) = 1) Then
e.Row.Visible = False
End If
End Sub
के बाद से इस चेक के हर पंक्ति के लिए किया जाएगा यह समाधान, कुछ स्पष्ट भूमि के ऊपर के साथ आता है परिणाम, उल्लेख नहीं है कि आपको अपना चयन क्यू बदलना है यूरी, लेकिन इसके पास डेटासेट को गतिशील रूप से बदलने की आवश्यकता नहीं है (जैसा कि पहले उदाहरण में है) और आपके वेब-प्रोजेक्ट के लिए अधिक नियंत्रण या कस्टम नियंत्रण पुस्तकालयों को तैनात करने की आवश्यकता नहीं है।
एक साइड-नोट के रूप में, यदि आप सशर्त रूप से ग्रिड के हेडर और पाद लेख को दिखाना चाहते हैं या खाली पोस्ट कोड के साथ पंक्ति छिपाने के बाद खाली डेटा टेक्स्ट/टेम्पलेट दिखाएं, तो आप अपनी हालत देख सकते हैं और यदि आवश्यक पंक्ति को हटा दें।
Protected Sub MyGridView_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles MyGridView.RowDataBound
If (e.Row.RowType = DataControlRowType.DataRow) AndAlso (Not e.Row.DataItem Is Nothing) AndAlso (CInt(e.Row.DataItem("dummyRow")) = 1) Then
e.Row.Visible = False
If (ConditionToShowEmptyDataTemplate) Then
CType(e.Row.DataItem, System.Data.DataRowView).Delete()
CType(e.Row.Parent, System.Web.UI.WebControls.Table).Rows.Remove(e.Row)
End If
End Sub
सूचना है कि यहाँ हम DataItem पंक्ति दोनों को दूर (आवश्यक है, क्योंकि पर बाद पीठ gridview फिर से डेटा बाइंडिंग के बिना ही पुनः बनाने सकता है) और क्योंकि GridView पंक्ति में ही (आवश्यक: फिर कोड कुछ इस तरह दिखेगा इस बिंदु से पंक्ति पहले से ही ग्रिड के चाइल्डटेबल में है, जिसे हम नहीं चाहते हैं)।
अंत में, यदि छुपा डमी रिकॉर्ड आपके ग्रिडव्यू में अन्य समस्याएं उत्पन्न कर रहा है, जब उसके पास अन्य डेटा है (उदाहरण के लिए, खराब पेजिंग), तो ग्रिडव्यू में अधिक पंक्तियां होने पर आप अपनी डमी पंक्ति को हटाने के लिए समान कोड का उपयोग कर सकते हैं।
आदर्श रूप से आप केवल तालिका में कोई रिकॉर्ड नहीं होने पर डमी पंक्ति दिखाना चाहते हैं। तो कुछ इस तरह करने के लिए अपने SelectCommand सेट:
का चयन करें [ID], प्रथम नाम, अंतिम नाम, ग्राहकों से ईमेल संघ का चयन करें 0 [ID], '' प्रथम ',' अंतिम नाम ',' ईमेल जहां 0 में (ग्राहकों से COUNT (1) चुनें)
इस तरह अगर गिनती> 0, डमी पंक्ति वापस नहीं आती है।
ध्यान दें कि डमी पंक्ति में इसमें से कोई खंड नहीं है।
आप एक "खाली" पंक्ति बना सकते हैं और यह अदृश्य बनाने:
if (list != null && list.Any())
{
gridView.DataSource = list;
gridView.DataBind();
}
else
{
MyCustomClass item = new MyCustomClass(){Id = 0, Name = "(No Data Rows)", Active = false};
List<MyCustomClass> l = new List<MyCustomClass>();
l.Add(item);
gridView.DataSource = l;
gridView.DataBind();
gridView.Rows[0].Visible = false;
}
- 1. एक खाली ग्रिडव्यू
- 2. ग्रिडव्यू
- 3. एंड्रॉइड - कैमरे पर ग्रिड लाइनें दिखाएं
- 4. खाली ग्रिडव्यू हालांकि sqldatasource के मान
- 5. खोज स्ट्रिंग खाली होने पर UISearchDisplayTableView दिखाएं
- 6. ग्रिडव्यू
- 7. ग्रिडव्यू
- 8. एएसपी.नेट ग्रिड व्यू रोकॉमैंड टेक्स्टबॉक्स खाली
- 9. ग्रिडव्यू
- 10. एंड्रॉइड: ग्रिडव्यू
- 11. ग्रिडव्यू वर्डवाप
- 12. Asp.net ग्रिडव्यू
- 13. सेटिंग ग्रिडव्यू हेडर रंग
- 14. ग्रिडव्यू
- 15. एक WPF DataGrid पर "कोई रिकॉर्ड नहीं मिला" संदेश दिखाएं जब यह खाली है
- 16. ग्रिडव्यू
- 17. ग्रिडव्यू
- 18. ग्रिडव्यू
- 19. ग्रिडव्यू
- 20. ग्रिडव्यू
- 21. ग्रिडव्यू पंक्ति संपादन - ड्रॉपडाउनलिस्ट
- 22. ExtJS ग्रिड में खाली पंक्तियां कैसे जोड़ें?
- 23. एक ग्रिडव्यू
- 24. एएसपी.NET ग्रिडव्यू
- 25. ग्रिडव्यू फ़ॉन्ट कैसे बदलें?
- 26. रिपोर्ट फ़ूटर एक्सेल
- 27. ओरेकल एसक्यूएल डेवलपर: ग्रिड में REFCURSOR परिणाम दिखाएं?
- 28. टेबल व्यू फ़ूटर तालिका
- 29. ग्रिड व्यू
- 30. एएसपीनेट ग्रिडव्यू
मैं एक datatable का उपयोग कर रहा है, तो आप किसी भी नमूने लिए क्या है? –
मेरा जवाब अपडेट किया गया। – TheGeekYouNeed
मुझे लगता है कि यह तरह का घबराहट है लेकिन मैं समय पर कम चल रहा था, इसलिए यह फिक्स मेरे लिए काम करता था। मुझे myGridView.Rows [0] .visible = false जोड़कर ग्रिडव्यू में उस पंक्ति को "खाली" पंक्ति को छिपाना पड़ा। – marty