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

(菜鸟求助)GridView中添加确认对话框后找不到行的索引?

将GridView中的一个ButtonField列,转换为模板列后添加了一个确认对话框,如下:

<asp:TemplateField HeaderText="修改" ShowHeader="False">
     <ItemTemplate>
          <asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="false" CommandName="mod" ImageUrl="~/pic/ToPast.gif" Text="归档" OnClientClick="return confirm('您确认修改记录吗?');" />
     </ItemTemplate>
</asp:TemplateField>

在RowCommand事件中执行更新操作
    protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "mod")
        {
            int index = Convert.ToInt32(e.CommandArgument);
            string ID = GView11.Rows[i].Cells[0].Text;

            //执行数据库操作UPDATE...修改某些字段的值
        }
    }

运行程序,选定某行单击“归档”按钮,在弹出的对话框里单击“确认”后执行到int index = Convert.ToInt32(e.CommandArgument)处出错:
输入的字符串格式不正确(无法获取index的值)
查看此时e.CommandArgument的值为"",(不知道e是什么了)
没有加模板易做图认按钮前,RowCommand事件运行正常!
请问各位高手该这种情况下 如何取得行号(index)或者行主键值(ID)呢?
--------------------编程问答-------------------- 更正:  RowCommand事件
       protected   void   GridView1_RowCommand(object   sender,   GridViewCommandEventArgs   e) 
        { 
                if   (e.CommandName   ==   "mod") 
                { 
                        int   index   =   Convert.ToInt32(e.CommandArgument); 
                        string   ID   =   GridView1.Rows[i].Cells[0].Text; 

                        //执行数据库操作UPDATE...修改某些字段的值 
                } 
        }  --------------------编程问答-------------------- 感谢mincunbao(衝動是魔鬼)!!!

根据mincunbao(衝動是魔鬼)的以往的回复解决了:
    引用——
      “在Gridview中加入一个模板列,编译模板列,在ItemTemplate中加入一个LinkButton,编译LinkButton   
  的属性,设其ID为btnview,commandArgument的值设为:<%#DataBinder.Eval(Container.DataItem,"要   
  绑定的数据段,如:UserID")%>'   oncommand="btnview_click".这些代码,可以在后台自动生成。   
  但要注意对前台LinkButton属性的设置。 ”

修改如下:  

<asp:TemplateField   HeaderText="修改"   ShowHeader="False"> 
  <ItemTemplate> 
    <asp:ImageButton   ID="ImageButton1"   runat="server"   CausesValidation="false"   CommandName="mod"   ImageUrl="~/pic/ToPast.gif"   Text="归档" commandArgument='<%#DataBinder.Eval(Container.DataItem,"ID")%>'  OnClientClick="return   confirm('您确认修改记录吗?');"   /> 
  </ItemTemplate> 
</asp:TemplateField> 

在RowCommand事件中执行更新操作 
        protected   void   GridView_RowCommand(object   sender,   GridViewCommandEventArgs   e) 
        { 
                if   (e.CommandName   ==   "mod") 
                { 
                        string   ID   =   e.CommandArgument.ToString();
                        //执行数据库操作UPDATE...修改某些字段的值 
                } 
        } 
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,