C# 输入字符串的格式不正确,无法检索gridview值

C# 输入字符串的格式不正确,无法检索gridview值,c#,asp.net,gridview,C#,Asp.net,Gridview,在我的网格视图中,当用户单击activate时,我希望它导航到activate.aspx页面。我想从上一页中检索三个值以激活.aspx页面。我的代码是: protected void Page_Load(object sender, EventArgs e) { if (this.Page.PreviousPage != null) { int rowIndex = int.Parse(Request.QueryString[

在我的网格视图中,当用户单击activate时,我希望它导航到activate.aspx页面。我想从上一页中检索三个值以激活.aspx页面。我的代码是:

    protected void Page_Load(object sender, EventArgs e)
    {
         if (this.Page.PreviousPage != null)
         {
         int rowIndex = int.Parse(Request.QueryString["RowIndex"]);
        GridView GridView1 = (GridView)this.Page.PreviousPage.FindControl("GridView1");
        GridViewRow row = GridView1.Rows[rowIndex];
        Label1.Text = row.Cells[3].Text;
        Label2.Text = row.Cells[2].Text;
        Label3.Text = row.Cells[2].Text;

        SqlDataAdapter da = new SqlDataAdapter("insert into login values('" + Label1.Text + "','" + Label2.Text + "','" + Label3.Text + "')",con);
        DataSet ds = new DataSet();
        da.Fill(ds);
     }
    }

  protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Redirect")
    {
        String email = "lblemail.Text";
        String mob = "lblmobno.Text";
        Server.Transfer("activate.aspx?RowIndex=" + email +mob, true);

    }
}
Aspx标记

   <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
        onrowcommand="GridView1_RowCommand">
        <Columns>
            <asp:TemplateField HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Larger" HeaderText="Activate/Delete"
                ItemStyle-Width="150px">
                <ItemTemplate>
                    <asp:LinkButton ID="linkbutton1" runat="server" Text="Activate" CommandName="Redirect"
                        CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'></asp:LinkButton>
                    <span onclick="return confirm('Are You sure want to Delete?')">
                        <asp:LinkButton ID="linkbutton2" runat="server" Text="Delete" CommandName="Delete"></asp:LinkButton>
                    </span>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

请帮助我。

这是因为您在RowIndex中发送文本/字符串,而作为RowIndex,即访问Rows集合的索引应为整数。 传递到rowindex的是“lblemail.textlobno.Text”,当您试图将其解析为int时,它会抛出一个明显的错误

更新:好的,您不需要传递行索引

第一项更改:

String email=lblEmail.Text;

String mob=lblMob.Text;
第二个变化:-

protected void Page_Load(object sender, EventArgs e)
{
    String email= Request.QueryString["email"];
    String mobNumber= Request.QueryString["mob"];
    String yourThirdParameter = Request.QueryString["thirdOne"]; // Provide your third parameter.

    SqlDataAdapter da = new SqlDataAdapter("insert into login values('" + email + "','" + mob + "','" + yourThirdParameter  + "')",con);
// Assuming this is the sequence.you can change it your way.

    DataSet ds = new DataSet();
    da.Fill(ds);

}


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Redirect")
    {
        String email = lblemail.Text;
        String mob = lblmobno.Text;
        String thirdOne= // Fill it as is the need
        Server.Transfer("activate.aspx?email=" + email+"&mob=" +mob+"&thirdOne="+thirdOne, true);

    }
}
将querystring参数重命名为更有意义的全名(我在下面的代码中将其重命名为rowIndex以发送电子邮件)

第三个变化:-

protected void Page_Load(object sender, EventArgs e)
{
    String email= Request.QueryString["email"];
    String mobNumber= Request.QueryString["mob"];
    String yourThirdParameter = Request.QueryString["thirdOne"]; // Provide your third parameter.

    SqlDataAdapter da = new SqlDataAdapter("insert into login values('" + email + "','" + mob + "','" + yourThirdParameter  + "')",con);
// Assuming this is the sequence.you can change it your way.

    DataSet ds = new DataSet();
    da.Fill(ds);

}


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Redirect")
    {
        String email = lblemail.Text;
        String mob = lblmobno.Text;
        String thirdOne= // Fill it as is the need
        Server.Transfer("activate.aspx?email=" + email+"&mob=" +mob+"&thirdOne="+thirdOne, true);

    }
}
提醒:-我怀疑如果您必须同时传递密码,则不应使用QueryString。 此外,在QueryString中传递电子邮件、手机号码也是不可取的

 if (e.CommandName == "Redirect")
    {
        String email = "lblemail.Text";
        String mob = "lblmobno.Text";
        Server.Transfer("activate.aspx?RowIndex=" + email +mob, true);

    }
在这里,您可以看到您将电子邮件和移动值作为查询字符串值发送,因此您的查询字符串如下所示

activate.aspx?RowIndex=lblemail.textlobno.Text

当您得到rowindex值时,它将返回lblemail.textlobno.Text作为一个值,调试它并观察它,您将看到它,所以现在您需要做的就是从正在使用的gridview中传递int值

您还可以使用隐藏字段,并从GridView1\u行命令中找到它


我希望这将有助于您理解……:)

为什么要将电子邮件和暴民作为行索引传递?除了email和mob之外,您希望传递哪些值来激活.aspx?在
int RowIndex=int.Parse(Request.QueryString[“RowIndex”])中的
Request.QueryString[“RowIndex”]
是什么
Request.QueryString[“RowIndex”]中的值是什么?他将emial+mob号码作为RowIndex传递我将电子邮件和mob作为行索引传递,因为我想在下一页中检索它们,即activate.aspx。我想将这些值存储在名为login的数据库表中,该表有三列用户名,pwd和mob_no.在activate.aspxAnswer的加载事件中,没有正确使用“RowIndex应该是int”这是什么意思?请举例说明您的答案。我如何修复此错误。你能举个例子告诉我吗。请帮助我你需要通过电子邮件,暴民和?这是一个词。sql命令中的顺序是什么?这段代码将lblemail.text、lblmobno.text存储到表中,而不是实际值。