有一个GridView,代码如下
<asp:GridView ID="GridView_WarningList" runat="server"  CssClass="warninglist" 
        AllowSorting="True" AutoGenerateColumns="False"   DataKeyNames="ID" 
        PageSize="18" AllowPaging="true" 
        onpageindexchanging="GridView_WarningList_PageIndexChanging">
        <Columns>
       
        <asp:BoundField  DataField="ID"  HeaderText="编号"/>
        <asp:BoundField  DataField="Title"  HeaderText="信息标题" />
        <asp:BoundField  DataField="Time" HeaderText="时间" DataFormatString="{0:yyyy-mm-dd}" />
         <asp:TemplateField HeaderText="操作" >
        <ItemTemplate>
            <asp:Button ID="check_btn" runat="server" Text="查看"  CssClass="admin_control"/>
            <asp:Button ID="alter_btn"
                runat="server" Text="修改" CssClass="admin_control"  OnCommand="Alter_Command" CommandArgument="<%#Bind("ID")  %>" />
问题一:当点击“修改”按钮时,执行“OnCommand”事件“Alter_Command”,同时在这里设定“CommandArgument”,可是小弟不会设置,这里报错。本来是想“CommandArgument”绑定“ID”,
然后后台代码中:
protected void Alter_Command(object sender,CommandEventArgs e)
        { 
            Int ID= e.CommandArgument;
        }这里的关键问题是不会绑定数据到“CommandArgument”。CommandArgument="<%#Bind("ID")  %>",这里的Bind("ID")是后台里的方法吗?应该怎样写?不是应该用CommandArgument="<%#Eval("ID")  %>的吗?
而且,这样写会提示“创建控件时出错”,“服务器标记的格式不正确”
            <asp:CheckBox ID="select_box" runat="server"  CssClass="admin_control"/></ItemTemplate>
        </asp:TemplateField>
        </Columns>
        <SelectedRowStyle  BackColor="#eeeef6" />
        <PagerStyle  BackColor="#eeeef6" Font-Bold="true" Font-Underline="true" HorizontalAlign="Left"  />
        <HeaderStyle  CssClass="warninglist_header"/>
        <FooterStyle  CssClass="warninglist_footer"/>
    </asp:GridView>
   

解决方案 »

  1.   

    CommandArgument=' <%#DataBinder.Eval(Container.DataItem,"id") %>' 
    CommandArgument='<%# Bind(" id")%>' 
      

  2.   

    http://blog.csdn.net/xianfajushi/archive/2008/11/30/3413317.aspx
      

  3.   

    用EVAL的时候CommandArgument="<%#Eval("ID") %>"就是这样呗 
    然后后台绑定这个Gridview的datasource 里面含有ID这个字段。。给你个DEMO 网上有好多 看看里面怎么写的就好了。。照着做一遍就都会了。。
      

  4.   


    gridview  72绝你要什么功能都有:http://blog.csdn.net/21aspnet/archive/2007/03/25/1540301.aspx
      

  5.   

    CommandArgument='<%#Bind("ID") %>' />
      

  6.   

            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                <Columns>
                <asp:TemplateField ItemStyle-Width="300" ItemStyle-HorizontalAlign="Center">
                    <ItemTemplate>
                        <%#Eval("Name") %>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button ID="Button2" runat="server" OnCommand="Button1_Command" CommandArgument='<%#Eval("ID") %>' Text='<%#Eval("ID") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                </Columns>           
            </asp:GridView>
        protected void Button1_Command(object sender, CommandEventArgs e)
        {
            int id = Convert.ToInt32((sender as Button).CommandArgument);
            Response.Write(id);
        }
      

  7.   

    也可以设置button的commandname,然后在RowCommand事件中获取
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                onrowcommand="GridView1_RowCommand">
                <Columns>
                <asp:TemplateField ItemStyle-Width="300" ItemStyle-HorizontalAlign="Center">
                    <ItemTemplate>
                        <%#Eval("Name") %>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button ID="Button2" runat="server" CommandName="Deletes" CommandArgument='<%#Eval("ID") %>' Text='<%#Eval("ID") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                </Columns>           
            </asp:GridView>
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Deletes")
            {
                Response.Write(e.CommandArgument.ToString());
            }
        }