2013-07-01 7 views
7

मैं एक ग्रिड दृश्य है और डेटा की एक किस्म का उपयोग कर रहा मूल्यों को प्राप्त करने में सक्षम हो:छिपाएं BoundField की, लेकिन अभी भी साथ सी #

<asp:BoundField DataField="Catagory" HeaderText="Support Catagory" SortExpression="Catagory" /> 
<asp:BoundField DataField="AppName" HeaderText="Application Name" SortExpression="IncidentNumber" /> 
<asp:BoundField DataField="IncidentNumber" HeaderText="Incident #" SortExpression="IncidentNumber" /> 
<asp:BoundField DataField="Hours" HeaderText="Hours" SortExpression="Hours" /> 
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" /> 
<asp:BoundField DataField="CreatedDate" HeaderText="Created Date" SortExpression="CreatedDate" /> 
<asp:BoundField DataField="PK_DailyTaskHours" HeaderText="" SortExpression="PK_DailyTaskHours" ReadOnly="true" /> 
<asp:BoundField DataField="PK_NonScrumStory" HeaderText="" SortExpression="PK_NonScrumStory" ReadOnly="true" /> 

अंतिम दो कॉलम लेकिन मैं दिखाने के लिए, मैं उपयोग कर रहा हूँ नहीं करना चाहते यह तो मैं इस सी # कोड के साथ प्राथमिक कुंजी को पुनः प्राप्त कर सकते हैं:

string dailyTaskHoursPK = (string)e.Values["PK_DailyTaskHours"].ToString(); 
    string nonScrumStoryPK = (string)e.Values["PK_NonScrumStory"].ToString(); 
    SqlDataSource4.DeleteParameters["dailyTaskHoursPK"].DefaultValue = dailyTaskHoursPK; 
    SqlDataSource4.DeleteParameters["nonScrumStoryPK"].DefaultValue = nonScrumStoryPK; 

हालांकि, मैं नहीं चाहता कि अंतिम दो कॉलम प्रदर्शित करना चाहते हैं। लेकिन जब मैं सेट:

Visible="false" 

और कार्यक्रम मैं निम्नलिखित त्रुटि मिलती है चलाने का प्रयास:

वस्तु एक वस्तु का एक उदाहरण के लिए सेट नहीं संदर्भ।

विवरण: वर्तमान वेब अनुरोध के निष्पादन के दौरान एक अनचाहे अपवाद हुआ। त्रुटि के बारे में अधिक जानकारी के लिए और जहां यह कोड में उत्पन्न हुआ, कृपया स्टैक ट्रेस की समीक्षा करें।

अपवाद विवरण: System.NullReferenceException: ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है।

मैं क्या गलत कर रहा हूं? मैं उपयोगकर्ता को उन क्षेत्रों को देखने से कैसे रोकूं?

उत्तर

6

ट्रेवर, तो आप अपने डेटा ग्रिड मार्कअप में इस तरह से अपनी DataKeyNames निर्धारित करने की आवश्यकता सही है:

<asp:GridView ID="GridView1" runat="server" 
     DataKeyNames="PK_DailyTaskHours,PK_NonScrumStory" 

बार जब आप इस किया है आप इस तरह तारों के रूप में वापस मूल्यों को प्राप्त कर सकते हैं:

 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) 
    { 
     string dailyTaskHoursPK = GridView1.DataKeys[0].Values["PK_DailyTaskHours"].ToString(); 
     string nonScrumStoryPK = GridView1.DataKeys[0].Values["PK_NonScrumStory"].ToString(); 
    } 
3

आपको डेटा-बाउंड नियंत्रण की डेटाकेनीनाम संपत्ति भी सेट करनी होगी। झूठी को दृश्यमान करने से फ़ील्ड को क्लाइंट को तब तक नहीं भेजा जाएगा जब तक कि डेटा DataKeyNames प्रॉपर्टी में निर्दिष्ट नहीं किया जाता है। DataControlField.Visible Property पर msdn पृष्ठ देखें।

+0

क्या आप डेटाकेनीनाम संपत्ति पर विस्तृत जानकारी दे सकते हैं? मुझे स्पष्ट नहीं है आपका क्या मतलब है। –

5

उन्हें दृश्यमान = "सत्य" रखने का प्रयास करें, लेकिन उन्हें सीएसएस से छुपाएं।

<style type="text/css"> 
.hidden-field 
{ 
    display:none; 
} 
</style> 

... 
<asp:BoundField DataField="PK_DailyTaskHours" HeaderText="" SortExpression="PK_DailyTaskHours" ReadOnly="true" > 
    <ItemStyle CssClass="hidden-field"/> 
</asp:BoundField> 
<asp:BoundField DataField="PK_NonScrumStory" HeaderText="" SortExpression="PK_NonScrumStory" ReadOnly="true" > 
    <ItemStyle CssClass="hidden-field"/> 
</asp:BoundField> 
+1

यह बॉक्स से पाठ को हटा देता है लेकिन कोशिकाओं को अभी भी देखा जा सकता है। –

+0

हां, मैं मानता हूं, मेरा काम करेगा, लेकिन आपका समाधान बेहतर था। –

+0

यह दृष्टिकोण मेरे लिए काम करता था - मुझे बस आइटम स्टाइल और हेडर स्टाइल दोनों को कक्षा लागू करना पड़ा। (और मुझे क्लाइंट पक्ष पर मानों तक पहुंचने की ज़रूरत है, सर्वर की तरफ नहीं।) – wloescher

1

आप किसी स्तंभ को छिपाने के लिए और भी अपने मूल्य प्राप्त करना चाहते हैं, तो आप aspx पेज में GridView के लिए DataKeyNames संपत्ति निर्दिष्ट करें।

<asp:GridView ID="GridView1" runat="server" DataKeyNames="PK_DailyTaskHours" ...> 

फिर आप उस कॉलम मान को नीचे कोड में नीचे प्राप्त कर सकते हैं।

string showId = (string) GridView1.DataKeys[6].Value.ToString(); 
1

कोड से ऊपर छुपाएं बाउंडफ़िल्ल्ड मान छुपाएं लेकिन हेडरटेक्स्ट छुपाएं और सभी कॉलम से मेल न चूकें, इसलिए मैं कुछ बदलाव बेल्व

<style type="text/css"> 
     .hidden-field 
     { 
      display:none; 
     } 
    </style> 

...

<asp:BoundField DataField="PK_NonScrumStory" HeaderText="" SortExpression="PK_NonScrumStory" ReadOnly="true" ItemStyle-CssClass="hidden-field" HeaderStyle-CssClass="hidden-field" > 
</asp:BoundField> 

अब यह उचित काम है font-size का उपयोग कर

जैसे तार्किक उपयोग करने के लिए

+0

मेरे लिए एकमात्र कामकाजी समाधान! आपका बहुत बहुत धन्यवाद! –

0

कोशिश

grid.Columns[0].HeaderStyle.Font.Size = grid.Columns[0].ItemStyle.Font.Size = 0; 
संबंधित मुद्दे