1

私はC#asp.net Webアプリケーションに取り組んでいます。グリッドビュー、テキストボックス、ボタンが含まれています。テキストボックスに1を入力してボタンを入力すると、最初の行が自動的に選択され、含まれる別のページに移動します私のコードで選択した行の詳細については、マウスを使用してハイパーリンクをクリックすることで次のページにリダイレクトできます...しかし、それは私の要件ではありません。ここに私のコードがあります

    <asp:TextBox ID="txtindex" runat="server"></asp:TextBox>
    &nbsp;<asp:Button ID="Button1" runat="server" Font-Bold="True" Height="39px" 
        onclick="Button1_Click" Text="go" Width="53px" />
    <br />
    <br />
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="acno" DataSourceID="SqlDataSource1">
        <Columns>
            <asp:BoundField DataField="acno" HeaderText="acno" InsertVisible="False" 
                ReadOnly="True" SortExpression="acno" />
            <asp:HyperLinkField DataNavigateUrlFields="acno"  HeaderText="username"     
           DataNavigateUrlFormatString="~/details.aspx?acno={0}" Target="_blank"                 DatatextField="username"     SortExpression="username" />
            <asp:BoundField DataField="rdate" HeaderText="rdate" SortExpression="rdate" />
        </Columns>
    </asp:GridView>
    <br />
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:postofficeConnectionString %>" 
        SelectCommand="SELECT [acno], [username], [rdate] FROM [customer]">
    </asp:SqlDataSource>

Default.aspx.cs

 protected void Button1_Click(object sender, EventArgs e)
{
    GridView1.SelectedIndex = int.Parse(txtindex.Text);
    int aid = Convert.ToInt32(GridView1.DataKeys[GridView1.SelectedIndex].Values[0]);

    Response.Redirect("details.aspx?acno{0}");
}

details.aspx.cs

`

protected void Page_Load(object sender, EventArgs e)
    {
        int id =int.Parse( Request.QueryString["acno"]);
        con.Open();
        SqlCommand cmd=new SqlCommand("select acno,username,states,district,fname,lname from customer where acno='"+id+"'",con);
        SqlDataReader dr;
        dr=cmd.ExecuteReader();
        while(dr.Read())
        {
            Label1.Text=dr[0].ToString();
            Label2.Text=dr[1].ToString();
            Label3.Text=dr[2].ToString();
            Label4.Text=dr[3].ToString();
            Label5.Text=dr[4].ToString();
            Label6.Text=dr[5].ToString();
        }

        con.Close();
 }
4

1 に答える 1

3
int index = int.Parse(txtindex.Text);
int aid = Convert.ToInt32(GridView1.DataKeys[index].Value.ToString());

Response.Redirect(string.Format("details.aspx?acno={0}", aid));

そして、int.TryParseユーザー入力をチェックするために使用することをお勧めします

int index,aid;
if (int.TryParse(txtindex.Text, out index) && 
    int.TryParse((GridView1.DataKeys[index].Value.ToString()) , out aid))
{
    Response.Redirect(string.Format("details.aspx?acno={0}", aid));
}
于 2013-08-29T05:56:27.993 に答える