我用dataview显示数据,使用了模板列,在我调用命令的时候,使用了如何代码,
dataview的datakeynames值:“ID”,Id的类型是“int”类型,
  protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        //int index = Convert.ToInt32(e.CommandArgument);
        int index = Convert.ToInt32(e.CommandArgument);(从这个位置报如下错误:输入字符串的格式不正确。)
      
        if (e.CommandName == "ck")
        {
            Response.Redirect("../zs/particular.aspx?id=" + index);    
        }
    }
可是总是报下的错误,不知道为什么,在我的其它页面中就没有发生这种情况
输入字符串的格式不正确。

解决方案 »

  1.   

    e.CommandArgument的值不是全数字字符会出现这个错误
      

  2.   

    你不会设个断点看看
    e.CommandArgument
    吗.
      

  3.   

    e.CommandArgument 是什么的时候报错?""?
      

  4.   

    我不用QQ.
    你错在在触发别的command的时候也会进入这个事件处理.比如你点Edit后也会进来.这时候参数就不是整数了.
      

  5.   

    没有明白,我这个dataview就使用了一个模板列,别的都是字段了。没有用其它的。
    那我怎么改呀,
    谢谢
      

  6.   

    你首先要告诉我们你想干什么.把aspx上的GridView 代码帖出来.
      

  7.   

    应该改成
     protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
        { 
           if (e.CommandName == "ck") 
            { 
              int index = Convert.ToInt32(e.CommandArgument);
              Response.Redirect("../zs/particular.aspx?id=" + index);     
            } 
        } 
    因为没有击发e.CommandArgument所在的按扭事件,e.CommandArgument应该是空的
      

  8.   

    这是dataview        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"  CssClass= "GridViewStyle "
                DataKeyNames="id" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCommand="GridView1_RowCommand"
                PageSize="17">
    <FooterStyle   CssClass= "GridViewFooterStyle "   /> 
            <RowStyle   CssClass= "GridViewRowStyle "   />       
            <SelectedRowStyle   CssClass= "GridViewSelectedRowStyle "   /> 
            <PagerStyle   CssClass= "GridViewPagerStyle "   /> 
            <AlternatingRowStyle   CssClass= "GridViewAlternatingRowStyle "   /> 
            <HeaderStyle   CssClass= "GridViewHeaderStyle "   />            
                <Columns>
                    <asp:BoundField DataField="通知书号" HeaderText="通知书号" />
                    <asp:BoundField DataField="姓名" HeaderText="姓名" />
                    <asp:BoundField DataField="性别" HeaderText="性别" />
                    <asp:BoundField DataField="系名" HeaderText="系名" />
                    <asp:BoundField DataField="录取专业" HeaderText="录取专业" />
                    <asp:BoundField DataField="考生成绩" HeaderText="考生成绩" />
                    <asp:TemplateField HeaderText="查看">
                        <ItemTemplate>
                            <asp:LinkButton ID="LinkButton1" runat="server" CommandName="ck">查看</asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>这是CS代码
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int index = Convert.ToInt32(e.CommandArgument);
          
            if (e.CommandName == "ck")
            {
                Response.Redirect("../zs/particular.aspx?id=" + index);    
            }
        }
    完成功能就是详细查看页面
      

  9.   

    你的e.CommandArgument没赋值,应该在LinkButton中加上CommandArgument=‘Eval("ID表的唯一值")’
      

  10.   

    赋值以后写到这里面:
      if (e.CommandName == "ck")  
            {  
            //code        }  
      

  11.   

    CommandArgument 是一个类不能直接读数,要强制转换Convert.ToInt32(e.CommandArgument),数值是点击的行号。
    但是只有模板列是butten时才能存在 如果是select类型就没有CommandArgument 
      

  12.   

    参考Insus.NET的写法:
     protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)  
        {
            if (e.CommandName == "ck")
            {
                int rowIndex = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex;
                string index = gvGuaHaoDan.DataKeys[rowIndex].Value.ToString();
                Response.Redirect("../zs/particular.aspx?id=" + index);
            }
        }