VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1152|回复: 10

怎么读取gridview里的一行ID啊?

[复制链接]

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-3-12 21:30:01 | 显示全部楼层 |阅读模式
我用gridview现实一个表,现在要更新表中的数据,自己定义了update的函数。。
<asp:BoundField HeaderText="No" DataField="DateId" ReadOnly="True" />
<asp:TemplateField HeaderText="Date">
   <ItemTemplate>
      <%# Eval("WDate")%>
   </ItemTemplate>
   <EditItemTemplate>
       <asp:TextBox ID="WDate" Text='<%# Eval("WDate")%>' runat="server" Width="140px" />
   </EditItemTemplate>
        <ItemStyle Width="150px" />
</asp:TemplateField>
然后我更新的地方
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        int id = (int)GridView1.DataKeys[e.RowIndex].Values[0];
        string date = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("WDate")).Text;
        string wdescription = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("WDescription")).Text;
        string status = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("Status")).Text;
      
        UpdateRecords();//这个是更新的函数。
        GridView1.EditIndex = -1;
        BindGrid();

    }
运行的时候说我
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
问题就是第一行:int id = (int)GridView1.DataKeys[e.RowIndex].Values[0];

怎么办啊?高手请指教啊。。
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-7 10:30:01 | 显示全部楼层
CheckBox cb = (CheckBox)GridView1.Rows[0].FindControl("CheckBox1");
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-7 14:30:01 | 显示全部楼层
如果有多行
for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
            if (cb.Checked)
            {
            }
        }
回复

使用道具 举报

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-6-9 19:00:01 | 显示全部楼层
谢谢大哥。。。
加上CheckBox的话,就改了页面的布局了哎。。我现在的情况是修改完成后,点了update按钮,结果没有更新,还报上面所说的错误,这个错误的原因,,我想是选ID的时候出的问题。。所以我想知道怎么选择这个ID。
回复

使用道具 举报

1

主题

18

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-6-11 08:00:02 | 显示全部楼层
int id = (int)GridView1.DataKeys[e.RowIndex].Value; 这样试试

回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-11 17:00:01 | 显示全部楼层
int id = (int)GridView1.DataKeys[i][0].ToString()
回复

使用道具 举报

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-6-13 11:30:01 | 显示全部楼层
谢谢楼上的两位。我测试了下,还是不行啊,
天天向上的编译后和原来一样的错误。。。
回复

使用道具 举报

0

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-15 08:00:01 | 显示全部楼层
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.toString());
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-6-18 10:00:01 | 显示全部楼层
帮顶 !
回复

使用道具 举报

0

主题

8

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-6-19 14:15:02 | 显示全部楼层
同意ls
差不多
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表