2012-11-29 90 views
0

这里是我的viewstate的代码。但它只存储一个值。我需要的是它会将选定的多个值保留在复选框中。这种方法是在分页情况的gridview中保持/保留复选框的值。如何在viewstate中存储复选框值的多个值?

public void chkAssignee_OnCheckedChanged(object sender, EventArgs e) 
     { 
     CheckBox selectBox = (CheckBox)sender; 
     GridViewRow myRow = (GridViewRow)selectBox.Parent.Parent; // the row 
     GridView myGrid = (GridView)myRow.Parent.Parent; // the gridview 
     string ID = myGrid.DataKeys[myRow.RowIndex].Value.ToString(); 
     GridViewRow rowSelect = (GridViewRow)selectBox.Parent.Parent; 

     int a = rowSelect.RowIndex; 

     ViewState["id"] = ID; 
     } 
+0

尝试将其保存到逗号分隔字符串或东西。 – sajanyamaha

+0

将内容保存在“List”或“Dictionary”中,并保存到“ViewState”中。 –

回答

1

尝试以下 以下代码可能会帮助你。


public void chkAssignee_OnCheckedChanged(object sender, EventArgs e) 
    { 
     CheckBox selectBox = (CheckBox)sender; 
     GridViewRow myRow = (GridViewRow)selectBox.Parent.Parent; // the row 
     GridView myGrid = (GridView)myRow.Parent.Parent; // the gridview 
     string ID = myGrid.DataKeys[myRow.RowIndex].Value.ToString(); 
     GridViewRow rowSelect = (GridViewRow)selectBox.Parent.Parent;

int a = rowSelect.RowIndex; 
    ArrayList SelecterdRowIndices=new ArrayList(); 
    if(ViewState["SelectedRowIndices"]!=null) 
    { 
     SelecterdRowIndices=(ArrayList)ViewState["SelectedRowIndices"]; 
     bool flag=false; 
     foreach (int i in SelecterdRowIndices) 
     { 
      if(i==Convert.ToInt32(ID)) 
      { 
       flag=true; 
       break; 
      } 
     } 
     if(!flag) 
     { 
      SelecterdRowIndices.Add(ID); 
     } 
    } 
    else 
    { 
     SelecterdRowIndices.Add(ID); 
    } 
    ViewState["SelectedRowIndices"] = SelecterdRowIndices; 

}