<asp:datagrid id="MyDataGrid" runat="server" AutoGenerateColumns="False" HorizontalAlign="Center" PageSize="10"  DataKeyField="id">请问是不是这么设置?我数据库中,id是主键,这里的
DataKeyField=""里面是不是就放id?
private void Button1_Click(object sender, System.EventArgs e)
{
string ids = "";
foreach(DataGridItem item in MyDataGrid.Items)
{
CheckBox box = (CheckBox)item.FindControl("Check");
if(box.Checked)
{
ids += MyDataGrid.DataKeys[item.ItemIndex].ToString() + ",";}
}
ids = ids.TrimEnd(new char[]{','}); Response.Write(ids);
Response.End(); }我想点击Button1时把选种的数据的id付值给ids,运行效果应该是:1,2,3,4,5
可是上面的代码,我运行后取不到ids的值,帮忙看看啊~~

解决方案 »

  1.   

    把ids = ids.TrimEnd(new char[]{','});先去掉看看。
      

  2.   

    我把ids = ids.TrimEnd(new char[]{','});去掉了还是写不出值,我在
    if(box.Checked)
    {
    ids += MyDataGrid.DataKeys[item.ItemIndex].ToString() + ",";}
    Response.Write("已选中");
    Response.End();}
    可以显示已选中
      

  3.   

    我昨天还可以显示的,怎么现在显示不了了?if(box.Checked)
    {
    ids += MyDataGrid.DataKeys[item.ItemIndex].ToString() + ",";}
    Response.Write("已选中");
    Response.End();}
    显示不出了
      

  4.   

    我把代码改成了:private void Button1_Click(object sender, System.EventArgs e)
    {
                          Response.Write("按扭选中");
       foreach(DataGridItem dgi in this.MyDataGrid.Items) 
    {

    Response.Write("循环开始");
    CheckBox chk = (CheckBox)dgi.FindControl("Check");
    Response.Write(chk);
    if(chk.Checked) 

    Response.Write("选中");
    Response.End();

    else
    {
    Response.Write("没选中");
    Response.End();
    }

    }显示结果为:按扭选中
    循环开始
    System.Web.UI.WebControls.CheckBox
    没选中
      

  5.   

    你是不是在Page_Load那里绑定了数据?如果是的话.要在绑定那里写上if(!Page.IsPostBack),因为不这么写的话,你每点击一次按扭都会变成初始值~