2015-08-18 70 views
0

您好我想在GridView中逐行顯示asp CheckBoxList中檢查的項目文本。這是我的代碼,它逐行添加列表項文本到gridview,但是當我檢查了它在GridView中一次又一次重複相同的項目文本的項目。我如何檢查Gridview中存在相同的項目文本,請幫助我。 這是我檢查事件如何檢查GridView中存在的CheckBoxList檢查值asp.net C#

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     // check view state is not null 
     if (ViewState["MailTracking"] != null) 
     { 
      //get datatable from view state 
      dt = (DataTable)ViewState["MailTracking"]; 
      // DataRow oItem = null; 
      if (dt.Rows.Count > 0) 
      { 


       foreach (ListItem li1 in CheckBoxListBranch.Items) 
       { 
        if (li1.Selected) 
        { 
         dt.Rows.Add(li1.Text); 
        } 

       } 


       //Remove initial blank row 
       if (dt.Rows[0][0].ToString() == "") 
       { 
        dt.Rows[0].Delete(); 
        dt.AcceptChanges(); 

       } 
       // dt.Rows.Add(oItem); 
       ViewState["MailTracking"] = dt; 
       GVDisplay.DataSource = dt; 
       GVDisplay.DataBind(); 
      } 
     } 
    } 

回答

0

你似乎每一個項目進行檢查時要附加到現有列表。我會每次創建一個新的DataTable(特別是如果它是一個小列表)。

實施例:

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    dt = new DataTable(); // Assuming that dt is a local variable 
    foreach (ListItem li1 in CheckBoxListBranch.Items) 
    { 
     if (li1.Selected) 
      dt.Rows.Add(li1.Text); 

    } 
    GVDisplay.DataSource = dt; 
    GVDisplay.DataBind(); 
}