DataGrid里面如何加checkbox,且checkbox被选中时,如何获得选中行的数据

时间:2022-03-15 09:06:18
DataGrid里面如何加checkbox,且checkbox被选中时,如何获得选中行的数据

7 个解决方案

#1


首先在前台加入如下的代码(添加一列)
 <asp:TemplateColumn>
      <ItemTemplate>
       <input type="hidden" id="SelectedID" runat="server" 
    value='<%# Container.ItemIndex%>'  NAME="SelectedID"/>
       <asp:CheckBox ID="chkExport" Runat="server" />
      </ItemTemplate>
     </asp:TemplateColumn> 
为页面加入一个按钮(名字叫多选),为之添加以下代码
foreach(DataGridItem di in this.DataGrid1.Items)
   {
    if(((CheckBox)di.FindControl("chkExport")).Checked==true)
    {
     this.Label1.Text+=this.DataGrid1.DataKeys[int.Parse(((HtmlInputHidden)di.FindControl("SelectedID")).Value)]+"<br>";
    }
   }
点击了这个按钮就在label的位置显示了所有选择的项目对应的数据表主键的值,可以利用这个值进行一些数据库的操作

比如:
string s="";
   foreach(DataGridItem di in this.DataGrid1.Items)
   {
    if(((CheckBox)di.FindControl("chkExport")).Checked==true)
    {
     s+=this.DataGrid1.DataKeys[int.Parse(((HtmlInputHidden)di.FindControl("SelectedID")).Value)]+",";
    }
   }
   SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
   SqlCommand comm=new SqlCommand("delete from tb1 where ID in (",conn);
   comm.CommandText+=s.Substring(0,s.Length-1)+")";//删除最后一个逗号
   conn.Open();   
   comm.ExecuteNonQuery();
   conn.Close();
   SetBind();

你可以再添加两个按钮,一个叫选择所有,一个叫取消所有选择,为之分别添加如下代码
foreach(DataGridItem di in this.DataGrid1.Items)
   {
        ((CheckBox)di.FindControl("chkExport")).Checked=true;
   }

foreach(DataGridItem di in this.DataGrid1.Items)
   {
     ((CheckBox)di.FindControl("chkExport")).Checked=false;
   }

#2


楼上的对头。
晚来一步。

#3


private void CheckBoxShowIn()//使已获取数据的CheckBox标记为已选
{
string str = select.Text;
string[] arr = str.Split(new char[] {','});

foreach (DataGridItem It in MyDataGrid.Items) 
{
for(int i=0;i<arr.Length;i++)
{
CheckBox SelectChkBxItem = (CheckBox) It.FindControl ("SeleteThis");

if (arr[i]==((Label) It.FindControl ("Store")).Text)
{
SelectChkBxItem.Checked=true;
}
}
  }

}

private void CheckBoxShowOut()//获得选取行的数据
{
this.select.Text="";
foreach (DataGridItem i in MyDataGrid.Items) 
{
CheckBox SelectChkBxItem = (CheckBox) i.FindControl ("SeleteThis");

if (SelectChkBxItem.Checked) 
{
this.select.Text += ","+((Label) i.FindControl ("Store")).Text.ToString();
    
}
}
if(this.select.Text.Length>1)
{
this.select.Text=select.Text.Substring(1);
}

}

#4


DataGrid在模板列里面加checkbox

#5


int intI;
intI=dgGetData.Items.Count ;
int intTemp=0;
object[] strID=new object[intI];
for(int i=0;i<intI;i++)
{
    if(((CheckBox)dgGetData.Items[i].Cells[0].FindControl("chkData")).Checked==true)
    {
        //提取作者编号
        strID[intTemp]=((CheckBox)dgGetData.Items[i].Cells[0].FindControl("chkData")).Text;
        intTemp=intTemp+1;
    }
    else
    {
        //暂不处理
    }
}

#6


DataGrid在模板列里面加checkbox
关键句 CType(DataGrid1.Items(ifor).Cells(0).Controls(1), CheckBox)
-------------------
这个不难,难在同时实现翻页和删除功能,那时须引进一个计数器

#7


我上面的是VB.NET版

#1


首先在前台加入如下的代码(添加一列)
 <asp:TemplateColumn>
      <ItemTemplate>
       <input type="hidden" id="SelectedID" runat="server" 
    value='<%# Container.ItemIndex%>'  NAME="SelectedID"/>
       <asp:CheckBox ID="chkExport" Runat="server" />
      </ItemTemplate>
     </asp:TemplateColumn> 
为页面加入一个按钮(名字叫多选),为之添加以下代码
foreach(DataGridItem di in this.DataGrid1.Items)
   {
    if(((CheckBox)di.FindControl("chkExport")).Checked==true)
    {
     this.Label1.Text+=this.DataGrid1.DataKeys[int.Parse(((HtmlInputHidden)di.FindControl("SelectedID")).Value)]+"<br>";
    }
   }
点击了这个按钮就在label的位置显示了所有选择的项目对应的数据表主键的值,可以利用这个值进行一些数据库的操作

比如:
string s="";
   foreach(DataGridItem di in this.DataGrid1.Items)
   {
    if(((CheckBox)di.FindControl("chkExport")).Checked==true)
    {
     s+=this.DataGrid1.DataKeys[int.Parse(((HtmlInputHidden)di.FindControl("SelectedID")).Value)]+",";
    }
   }
   SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
   SqlCommand comm=new SqlCommand("delete from tb1 where ID in (",conn);
   comm.CommandText+=s.Substring(0,s.Length-1)+")";//删除最后一个逗号
   conn.Open();   
   comm.ExecuteNonQuery();
   conn.Close();
   SetBind();

你可以再添加两个按钮,一个叫选择所有,一个叫取消所有选择,为之分别添加如下代码
foreach(DataGridItem di in this.DataGrid1.Items)
   {
        ((CheckBox)di.FindControl("chkExport")).Checked=true;
   }

foreach(DataGridItem di in this.DataGrid1.Items)
   {
     ((CheckBox)di.FindControl("chkExport")).Checked=false;
   }

#2


楼上的对头。
晚来一步。

#3


private void CheckBoxShowIn()//使已获取数据的CheckBox标记为已选
{
string str = select.Text;
string[] arr = str.Split(new char[] {','});

foreach (DataGridItem It in MyDataGrid.Items) 
{
for(int i=0;i<arr.Length;i++)
{
CheckBox SelectChkBxItem = (CheckBox) It.FindControl ("SeleteThis");

if (arr[i]==((Label) It.FindControl ("Store")).Text)
{
SelectChkBxItem.Checked=true;
}
}
  }

}

private void CheckBoxShowOut()//获得选取行的数据
{
this.select.Text="";
foreach (DataGridItem i in MyDataGrid.Items) 
{
CheckBox SelectChkBxItem = (CheckBox) i.FindControl ("SeleteThis");

if (SelectChkBxItem.Checked) 
{
this.select.Text += ","+((Label) i.FindControl ("Store")).Text.ToString();
    
}
}
if(this.select.Text.Length>1)
{
this.select.Text=select.Text.Substring(1);
}

}

#4


DataGrid在模板列里面加checkbox

#5


int intI;
intI=dgGetData.Items.Count ;
int intTemp=0;
object[] strID=new object[intI];
for(int i=0;i<intI;i++)
{
    if(((CheckBox)dgGetData.Items[i].Cells[0].FindControl("chkData")).Checked==true)
    {
        //提取作者编号
        strID[intTemp]=((CheckBox)dgGetData.Items[i].Cells[0].FindControl("chkData")).Text;
        intTemp=intTemp+1;
    }
    else
    {
        //暂不处理
    }
}

#6


DataGrid在模板列里面加checkbox
关键句 CType(DataGrid1.Items(ifor).Cells(0).Controls(1), CheckBox)
-------------------
这个不难,难在同时实现翻页和删除功能,那时须引进一个计数器

#7


我上面的是VB.NET版