2009-10-13 6 views
7

मेरे पास निम्न सूची दृश्य आइटम टेम्पलेट है, जिसमें मैं Checked चेकबॉक्स की संपत्ति को पूर्णांक मान को बांधने की कोशिश कर रहा हूं।चेकबॉक्स के चेक किए गए फ़ील्ड के लिए एएसपी.नेट बाध्यकारी पूर्णांक

IsUploaded मूल्य केवल 0 और 1 में शामिल है ...

<asp:ListView ID="trustListView" runat="server"> 
    <ItemTemplate> 
     <asp:CheckBox ID="isUploadedCheckBox" runat="server" 
      Checked='<%# Bind("IsUploaded") %>' /> 
    </ItemTemplate> 
</asp:ListView> 

लेकिन ASP.NET शिकायत है कि

अपवाद विवरण: System.InvalidCastException: Sepcified डाली मान्य नहीं है

हालांकि DataBinder.Eval() का उपयोग कर कोड का पालन करते हुए,
I nee डी को 2-तरफा बाध्यकारी होना है, इस प्रकार Bind() का उपयोग करने की आवश्यकता है।

<asp:CheckBox ID="isUploadedCheckBox2" runat="server" 
    Checked='<%# Convert.ToBoolean(
     DataBinder.Eval(Container.DataItem, "IsUploaded"))) %>' /> 

मैं कैसे 0 और 1 के Bind() का उपयोग कर बूलियन में बदल सकते हैं?


[उत्तर] मैं एक नया संपत्ति कैसे के बारे में अपने वर्ग जो रूपांतरण करता है के लिए एक संपत्ति जोड़ने answer by Justin

+0

एक int विकल्प के बजाय "IsUploaded" थोड़ा या अन्य बूलियन डेटाटाइप बना रहा है? – kscott

+0

@kscott: "IsUploaded" थोड़ा सा है। – Sung

+0

आप किस प्रकार के डेटासोर्स को बाध्यकारी कर रहे हैं? एक टेबल एडाप्टर को इंगित करने वाले ऑब्जेक्टडेटासोर्स का उपयोग करके थोड़ा सा चेकबॉक्स बाध्य करना मेरे लिए कोई त्रुटि नहीं है। – kscott

उत्तर

7

यदि आप वर्ग बदलने के लिए तैयार हैं, जोड़ने वर्ग पर एक संपत्ति है कि एक बूलियन

public bool IsUploadedBoolean 
{ 
    get { return IsUploaded != 0; } 
    set { IsUploaded = value ? 1 : 0; } 
} 

यदि नहीं, तो आप एक TypeConverter के साथ सफलता हो सकता है:

  1. एक कस्टम TypeConverter जो बूलियन रूपांतरण
  2. स्टिक TypeConverterAttribute IsUploaded संपत्ति पर अपने कस्टम typeconverter को नेट निर्देशित करने के लिए करने के लिए 0 और 1 संभाल लेंगे बनाएँ।
3

में उल्लेख जोड़कर आंशिक वर्ग के माध्यम से स्वत: जनरेट प्रकार विस्तार किया है?

public bool IsUploadedBool 
{ 
    get { return IsUploaded == 1; } 
} 

और उसके बाद के बजाय अंतर्निहित INT को यह IsUploadedBool संपत्ति के लिए बाध्य सीधे।

मार्क

+0

@marc_s: आपका मतलब डबल "==" नहीं "=" :) – Sung

+0

मैंने किया - बिल्कुल - धन्यवाद! अपडेट किया गया –

2

एक घटिया काम की तरह चारों ओर सूची आइटम के साथ इस सूची में नीचे एक बूंद का उपयोग करने के एक ही प्रभाव देने के लिए होगा:

<asp:DropDownList ID="ddlBool" runat="server" SelectedValue= '<%# Bind("IsUploaded") %>'> 
    <asp:ListItem Text="True" Value="1" /> 
    <asp:ListItem Text="False" Value="0" /> 
</asp:DropDownList> 
+0

क्षमा करें स्कॉट लेकिन मुझे अपने विशेष मामले के लिए "चेकबॉक्स" से चिपकना होगा। लेकिन मुझे इस पर अंतर्दृष्टि देने के लिए धन्यवाद। – Sung

+0

@kscott: क्या आप अपने उत्तर में परिवर्तन करने में सक्षम होंगे? (एक डॉट या इत्यादि जोड़ें) ताकि मैं आपका जवाब ऊपर उठा सकूं? मैं आपके मामले को मेरे मामले के लिए एक वैध विकल्प मानता हूं। धन्यवाद। – Sung

1

कैसे के बारे में

ASPX पेज

<asp:CheckBox ID="social_facebook" runat="server" Checked='<%# Bind("True") %>' />Facebook 

संहिता (btw मैं एक संग्रहीत प्रक्रिया का उपयोग कर रहा) के पीछे

cmd.Parameters.Add("@p_facebook", SqlDbType.Bit).Value = social_facebook.Checked; 
0

समाधान:

हाय, मैं एक ग्रिड व्यू के अंदर अजाक्स रेटिंग का भी उपयोग कर रहा हूं और मैं इस समस्या में भाग गया। कई मंचों को देखने के बाद, मैंने कोशिश की और यह मेरे लिए काम किया। मुझे उम्मीद है कि यह आपकी मदद करता है:

<%# Convert.ToInt32(Eval("EVALUATION")) %> 

एक पूर्णांक देता है, क्योंकि आप जांच कर रहे हैं जो एक पूर्णांक है।

संबंधित मुद्दे

 संबंधित मुद्दे