我用datagrid绑定了筛选后的数据,在datagrid中我加了一个checkbox作为模板,在显示数据后,
checkbox被选中后,在按删除按钮就删掉那条信息,而且这个checkbox和删除按钮结合可以删除多项。但是实现有问题?
foreach(DataGridItem thisItem in DataGrid1.Items)
{
   if(((CheckBox)thisItem.Cells[0].Controls[1]).Checked) 
    {
string str = DataGrid1.DataKeys[thisItem.ItemIndex].ToString();

//删除
         //代码删除写的有问题,就不写了,请帮忙
      ????

    }
}
还有请教能否读datagrid中的选中信息?

解决方案 »

  1.   

    用 JS收集ID存到selId
    aspx<script language="javascript">
    <!--function select_all()
    {
    for (var i=0;i<frmMain.elements.length ;i++)
    if(frmMain.elements[i].name=="selItem")
    frmMain.elements[i].checked=true
    }function getDelId(){
    var length=document.all.selItem.length;
    if(document.all.selItem.checked){
    document.all.selId.value+="'"+document.all.selItem.value+"',";
    }
    else{
    for(i=0;i<length;i++){
    if(document.all.selItem[i].checked){
    document.all.selId.value+="'"+document.all.selItem[i].value+"',";
    }
    }
    }
    if(!window.confirm("确实要删除这些信息吗?"))
    document.all.selId.value="";

    //-->
    </script><asp:TemplateColumn HeaderText="操作">
    <HeaderStyle HorizontalAlign="Center" Width="50px"></HeaderStyle>
    <ItemTemplate>
    <input type="checkbox" name="selItem" value='<%# DataBinder.Eval(Container.DataItem,"ID") %>'>
    </ItemTemplate>
    </asp:TemplateColumn><input type="button" height="5" value="全选" name="selectall" onClick="return select_all()">
    <input type="reset" name="Reset" value="取消选择">
    <asp:button id="btnDel" runat="server" Text="删除选中"></asp:button>
    <INPUT id="selId" type="hidden" runat="server" NAME="selId">cs处理部分
    private void Page_Load(object sender, System.EventArgs e)
    {
    if (!Page.IsPostBack)
    {
    btnDel.Attributes["onclick"] = "getDelId()";
    RefreshGrid();
    }
    }private void dataGrid_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    dataGrid.CurrentPageIndex=e.NewPageIndex;
    RefreshGrid();
    }private void RefreshGrid()  
    {
    string sqlStr = "select * from [Article]  order by ID desc";
    doData.bindDtatGrid(sqlStr,dataGrid);
    }
    private void btnDel_Click(object sender, System.EventArgs e)
    {
    string strWhere="'',"+selId.Value;
    strWhere=strWhere.Substring(0,strWhere.Length-1);
    string delStr = "delete from [Article] where ID in ("+strWhere+")";
    doData.opData(delStr);
    RefreshGrid();
    }
      

  2.   

    楼上正解.net还可以在后台生成js 效果 会更好
      

  3.   

    你要的是这个吧:
    for(i=DataGrid1.Items.Count-1;i>-1;i--)
    {
       CheckBox CheckBox_sel = (CheckBox) DataGrid1.Items[i].FindControl("Check_xxx");
       
         //当有CHECKBOX被选中时
        if(CheckBox_sel.Checked)
        {
              ......
        }
    }
      

  4.   

    当ITEM 的状态改变之后  可以批量更新 删除的
      

  5.   

    能否读datagrid中的选中信息?
    答:既然你能取得DataKeys,那么在以这个DataKeys为关键字,到数据库里检索相对应的数据,然后把它们显示出来就可以了!
      

  6.   

    主要问题在于不能读取Datagrid中checkbox的状态,你选了和没选都一个样。是不是对checkbox要进行设置的?