当前位置:编程学习 > C#/ASP.NET >>

GridView 如何转递id值。。

 <asp:GridView ID="Article_GridView1" runat="server"
        OnRowDeleting="Article_GridView1_RowDeleting"
     AutoGenerateColumns="False" OnRowDataBound="Article_GridView_RowDataBound"    AllowPaging="True"  PageSize="15" AllowSorting="True" Width="100%"  >
        <Columns>
            <asp:BoundField DataField="Email" HeaderText="邮箱" />
            <asp:BoundField DataField="Ename" HeaderText="姓名" />
            <asp:BoundField DataField="Ecompany" HeaderText="公司" />
            <asp:BoundField DataField="Econtact" HeaderText="联系电话" />
            <asp:BoundField DataField="Status" HeaderText="状态" />
            <asp:BoundField DataField="AddTimes" HeaderText="订阅时间" />
            <asp:commandfield HeaderText="操作" ShowDeleteButton="True"  DeleteText="【废除】">  </asp:commandfield>            <asp:commandfield HeaderText="操作" ShowSelectButton="True" SelectText="【设为有效】">  </asp:commandfield>
        </Columns>
     </asp:GridView>




后台代码
        protected void Article_GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
   
            string id = ??           // EmailListDAL.UpdateEmailStatus();
            msgBox.MsgBoxEnd(this.Page, "废除成功,状态已经改为废除!");

        }


ID也是表里的一个字段。我想在删除时换得该行的ID,有啥办法吗??

="【设为有效】">  这里也是需要转替id的、 不知怎么传和接收。 --------------------编程问答-------------------- 有办法

页面

DataKeyNames="ID"//Gridview有这么个属性,你把ID值放到这里


后台获取

//假那么你的删除里面就可以这样获取到对应的ID值
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
--------------------编程问答--------------------


还没这么写过。。。放一个hidden 
findcontrol  试试啊 --------------------编程问答--------------------
引用 2 楼  的回复:
还没这么写过。。。放一个hidden 
findcontrol 试试啊

你要放多少个hidden啊???
一个页面30行,那是不是就得30个hidden啊亲~~~ --------------------编程问答-------------------- 2楼的可以。   在A标签的地方绑定一下ID。 然后可以再后面用{0}来获取ID值。  --------------------编程问答-------------------- 使用隐藏控件,通过Eval绑定ID都可以,
commandfield 删除的话,觉得还是通过Eval绑定id来获取id删除比较方便 --------------------编程问答-------------------- 通过这个方法的参数 
protected void Article_GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
  {
    
  string id = ?? // EmailListDAL.UpdateEmailStatus();
  msgBox.MsgBoxEnd(this.Page, "废除成功,状态已经改为废除!");

  }
看看这个参数e中都有啥东西  好好跟跟这个参数 --------------------编程问答--------------------
引用 5 楼  的回复:
使用隐藏控件,通过Eval绑定ID都可以,
commandfield 删除的话,觉得还是通过Eval绑定id来获取id删除比较方便


我觉得绑定数据好点 --------------------编程问答-------------------- commandargument=<%#eval("id")%>

string id=e.commandargument.tostring(); --------------------编程问答-------------------- 设置主键啊
  GridView1.DataKeyNames = new string[] { "id" }; --------------------编程问答-------------------- <Asp:linkbutton text="删除" CommandName="del"  CommandArgument="<%Eval('id')%>"/> --------------------编程问答-------------------- <asp:TemplateField>
<ItemTemplate>
    <asp:LinkButton ID="LinkButton1" runat="server" CommandName="delete" OnClientClick="javascript:return confirm('确认删除么?');" >删除</asp:LinkButton>
 </ItemTemplate>
</asp:TemplateField>

gridview的数据源里面加一个DELETE 语句DELETE FROM Student WHERE (student_ID = @student_ID)
注释:()里面的是你的表的  ID列=@ID列  --------------------编程问答-------------------- 绑定数据是用GridView1.DataKeyNames = new string[] { "id" };
删除时 string id=GridView1.DataKeys[e.RowIndex].Value.ToString(); --------------------编程问答-------------------- 你要先在gridview里面添加超链接,然后连接的id取值为{?},然后cs中获取这个id --------------------编程问答--------------------  <asp:HyperLinkField DataNavigateUrlFormatString="Detailview.aspx?username={0}" 
                  Text="查看" DataNavigateUrlFields="username" DataTextField="username" />

我也遇到一样的问题,我现在可以实现了,跟你分享下

你得下一页获取id 直接    string a = Request["username"];就可以 --------------------编程问答-------------------- 1楼的方法我认为是最直接的,在DataKeyNames这个属性中的把Id赋值上去就行了
页面

HTML code


DataKeyNames="ID"//Gridview有这么个属性,你把ID值放到这里



后台获取

C# code


//假那么你的删除里面就可以这样获取到对应的ID值
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
[/Quote]
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,