这个是根据某MVP达人的例子写的。
1,JS:
  //將選中的item保存在txtItem中以備保存,修改使用
   function AddRemoveValues(oChk) {
    //Attention:保存的值應該具有唯一性,這樣才不會替換錯誤的項     
     if(oChk.checked)
     {
         Form1.txtItem.value+=oChk.value+";";
         }
     else
     {
      Form1.txtItem.value = Form1.txtItem.value.replace( oChk.value+";","");
     }
           }
2.HTML:
<input runat="server" type="hidden" id="txtItem">

<asp:TemplateColumn HeaderText="請選擇" Visible="False">
             <ItemTemplate>
              <input type=checkbox runat=server id="ChkSelect" onclick="AddRemoveValues(this)"  value='<%#DataBinder.Eval(Container.DataItem,"Item")%>' NAME="ChkSelect"/>
             </ItemTemplate>
             <HeaderStyle Font-Size="9pt" Wrap="False" ForeColor="White"></HeaderStyle>
             <ItemStyle Wrap="False"></ItemStyle>
             <FooterStyle Wrap="False"></FooterStyle>
            </asp:TemplateColumn>
3..VB
 Dim a() As String = Split(txtItem.Value, ";")
 For i = 0 To UBound(a)
                For j = 0 To DataGrid4.Items.Count - 1
                    If a(i).IndexOf(DataGrid4.Items(j).Cells(1).Text) >= 0 Then
                         Dim ChkSelected As HtmlInputCheckBox = New HtmlInputCheckBox
                             ChkSelected = CType((DataGrid4.Items(j).Cells(0).FindControl("ChkSelect")), HtmlInputCheckBox)
                        ChkSelected.Checked = True
                next
next
基本逻辑很简单,就是在数据库里有两个表,第一个表示所有的item,第二个是已经选中并保存的item。将第二个表中的item捞出来,每个item用";"隔开,然后与datagrid的每项item比较,如果相等的话,就在选中该项的checkbox
恩恩。。基本上这样。