2011-08-24 17 views
8

पर संपादित करें अक्षम करें मैं ग्रिडव्यू का उपयोग कर रहा हूं मेरे ग्रिडव्यू में मेरे मानों को संपादित करने के लिए संपादित करें, जब मैं संपादन दबाता हूं, तो सभी कॉलम संपादित किए जा सकते हैं, मुझे लगता है कि कॉलम में से एक को अनुमति नहीं है संपादित किया जाना है।ग्रिडव्यू 1 कॉलम एएसपीनेट

क्या कोई तरीका है कि मैं ऐसा कर सकता हूं?

<asp:GridView 

ID="GridView1" 
runat="server" 
AllowSorting="True" 
OnRowCommand="GridView1_SelectedIndexChanged1" 
AutoGenerateEditButton="True" 
OnRowCancelingEdit="GridView1_RowCancelingEdit" 
CellSpacing="10" 
OnRowUpdating="GridView1_RowUpdating" ShowFooter="True" 
onselectedindexchanged="GridView1_SelectedIndexChanged" 
OnRowEditing="GridView1_RowEditing"> 



</asp:GridView> 

धन्यवाद

+0

कैसे आप अपने gridview बाध्यकारी हैं। टेम्पलेटफिल्ड या बाउंडफिल्ड? – naveen

उत्तर

4

निश्चित रूप से, EditItemTemplate का उपयोग करें । निम्न उदाहरण क्षेत्र आईडी में संपादन मोड में संपादित नहीं किया जाएगा:

<asp:GridView runat="server"> 
    <Columns> 
     ... 
     <asp:TemplateField HeaderText="ID"> 
      <EditItemTemplate> 
       <%# Eval("ID") %> 
      </EditItemTemplate> 
     </asp:TemplateField> 
     ... 
    </Columns> 
</asp:GridView> 
+0

यह काम करता है, लेकिन यह एक और कॉलम बनाता है और वर्तमान में केवल – Karl

+1

पढ़ता नहीं है क्योंकि डिफ़ॉल्ट रूप से ग्रिड व्यू की संपत्ति 'ऑटो जेनरेट कॉलम' सत्य पर सेट है। इसलिए यह ऑब्जेक्ट की प्रत्येक प्रॉपर्टी के लिए कॉलम जेनरेट करता है जो डेटाइटम के रूप में प्रदान किया जाता है और घोषित कॉलम (हमारे मामले में आईडी) जोड़ता है। ऑटो जेनरेट किए गए कॉलम के व्यवहार को प्रभावित करने का कोई तरीका नहीं है। यदि आप कुछ कस्टम (जैसे किसी निश्चित कॉलम पर अक्षम करना संपादित करना चाहते हैं) तो आपको कॉलम की ऑटो पीढ़ी को बंद करना चाहिए और बाउंडफिल्ड, टेम्पलेटफिल्ड इत्यादि का उपयोग करके आपको जो कुछ भी चाहिए, उसे घोषित करना चाहिए – Andrei

0

कुछ मार्कअप दिखाने कृपया:

thiss मेरी aspx कोड है। त्वरित और गंदे मुझे लगता है कि आपके मार्कअप एएसपीएक्स के आधार पर आप उस कॉलम के लिए EditItem टेम्पलेट से टेक्स्टबॉक्स को हटा सकते हैं, जिसे आप संपादन को रोकना चाहते हैं ... पाठ्यक्रम के अन्य समाधान भी हैं :)

+0

मेरा संपादित करें कृपया – Karl

20

आप asp:BoundField उपयोग कर रहे हैं, यदि आप asp:TemplateField उपयोग कर रहे हैं

<asp:BoundField DataField="CustomerID" 
     ReadOnly="true"  
     HeaderText="Customer ID"/> 

वरना कोशिश, आप कर सकते हैं या तो

  1. में यह प्रस्तुत या तो एक asp:Label अंदर EditItemTemplate
  2. छोड़ेंEditItemTemplate उस स्तंभ के लिए पूरी तरह
+0

मैं डेटाबेस का उपयोग कर रहा हूं, मैं आपके बाउंडफील्ड का उपयोग करने की कोशिश कर रहा हूं लेकिन यह मुझे बता रहा है यह – Karl

+1

नहीं मिला यह उदाहरण देखें। http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.aspx बाउंडफ़िल्ल्ड 'कॉलम' – naveen

+0

के अंदर होना चाहिए यदि आप बाउंडफील्ड का उपयोग कर रहे हैं तो यह सबसे अच्छा समाधान है। और यदि संभव हो, तो बाउंडफिल्ड में गैर संपादन योग्य फ़ील्ड रखें। – MindLoggedOut

0

आप टेम्पलेट क्षेत्र का उपयोग कर रहे हैं, तो

((TemplateField)gvGridView.Columns[index]).EditItemTemplate = null; 

अगर boundfield

((BoundField)gvGridView.Columns[index]).ReadOnly = true; 
संबंधित मुद्दे