2013-03-30 3 views
1

Я хотел бы сохранить значения datatable в CheckListBoxattributes метода на postback также без вызова связывания метод сноваСвязывание CheckBoxList атрибутов с использованием ListItem

Так что у меня asp:CheckBoxList и я его связывания в

if (!IsPostBack) 
      { 
// code for binding 
    } 

ASP.NET

<asp:CheckBoxList ID="chkboxCandidateList" runat="server"> 
</asp:CheckBoxList> 

Это мой метод, чтобы связать C#

DataTable dtCandidateName = // datatable having all specified column 
      if (dtCandidateName != null && dtCandidateName.Rows.Count > 0) 
      { 
       chkLstBxCandidateName.Items.Clear(); 
       ListItem lstItem = null; 
       for (int i = 0; dtCandidateName.Rows.Count > i; i++) 
       { 
        lstItem = new ListItem(Convert.ToString(dtCandidateName.Rows[i]["Candidate Name"]), Convert.ToString(dtCandidateName.Rows[i]["Candidate Id"])); 
        lstItem.Attributes.Add("Email", Convert.ToString(dtCandidateName.Rows[i]["Email"])); 
        lstItem.Attributes.Add("Mobile", Convert.ToString(dtCandidateName.Rows[i]["Mobile"])); 
        chkLstBxCandidateName.Items.Add(lstItem); 
       } 
      } 

И даже я получаю значение в загрузке страницы сначала вызовите

HTML

<span email="[email protected]" mobile="01111111111"><input id="ContentPlaceHolder1_chkboxCandidateList_0" type="checkbox" name="ctl00$ContentPlaceHolder1$chkboxCandidateList$0" checked="checked" value="486"><label for="ContentPlaceHolder1_chkboxCandidateList_0">Kratika Shukla</label></span> 

Так что, когда я нажимаю на кнопку Отправить I не получаю значение Email и Мобильный Телефон

chkboxCandidateList.Items[i].Attributes["Email"] -- getting null 

Я проверил this article, но не удовлетворен ответом

ответ

0

получил решение here

просто создайте класс

namespace customControl 
{ 
    public class ClsCheckBoxList : CheckBoxList 
    { 
     protected override object SaveViewState() 
     { 
      // create object array for Item count + 1 
      object[] allStates = new object[this.Items.Count + 1]; 

      // the +1 is to hold the base info 
      object baseState = base.SaveViewState(); 
      allStates[0] = baseState; 

      Int32 i = 1; 
      // now loop through and save each Style attribute for the List 
      foreach (ListItem li in this.Items) 
      { 
       Int32 j = 0; 
       string[][] attributes = new string[li.Attributes.Count][]; 
       foreach (string attribute in li.Attributes.Keys) 
       { 
        attributes[j++] = new string[] { attribute, li.Attributes[attribute] }; 
       } 
       allStates[i++] = attributes; 
      } 
      return allStates; 
     } 

     protected override void LoadViewState(object savedState) 
     { 
      if (savedState != null) 
      { 
       object[] myState = (object[])savedState; 

       // restore base first 
       if (myState[0] != null) 
        base.LoadViewState(myState[0]); 

       Int32 i = 1; 
       foreach (ListItem li in this.Items) 
       { 
        // loop through and restore each style attribute 
        foreach (string[] attribute in (string[][])myState[i++]) 
        { 
         li.Attributes[attribute[0]] = attribute[1]; 
        } 
       } 
      } 
     } 
    } 
} 

И в ASP.NET добавить ссылку на этот

<%@ Register TagPrefix="TRControls" Namespace="customControl" %> 

и

<TRControls:ClsCheckBoxList ID="chkBox" runat="server"> 
    </TRControls:ClsCheckBoxList> 

для связывания в коде позади

if (!IsPostBack) 
     { 
      ListItem lstItem = new ListItem("vikas", "0", true); 
      lstItem.Attributes.Add("love", "sure"); 
      chklstbox.Items.Add(lstItem); 
      chkBox.Items.Add(lstItem); 
      lstItem = new ListItem("kratika", "1", true); 
      lstItem.Attributes.Add("love", "not sure"); 
      chklstbox.Items.Add(lstItem); 
      chkBox.Items.Add(lstItem); 
     } 

вот, теперь я мог получить значение атрибута

0

попробовать это на кнопку Нажмите

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
List<string> values=new List<string>(); 
foreach (ListItem item in chkboxCandidateList.Items) 
if (item.Selected) 
    values.Add(item.Text); // retrieve values here 

}

это может работать для вас

+0

Я хочу, чтобы значение атрибута на стороне сервера – vikas

Смежные вопросы