0

我有一个问题需要解释一下,所以我会尽量说清楚。我正在处理一些网页。一个 (CustomerListPage) 我通过 GridView 拉出一个客户列表。我使这些行可点击,以便选择客户本身就是到下一页的链接。一旦用户点击了一个客户,它会将他们带到下一页(CustomerUsePage)。此页面假设显示在我创建的其中一个标签中单击的客户姓名,以及其余标签中的一些其他信息(客户 ID、街道、城市等)。这是我的 CustomerListPage 上的代码:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
   GridViewRow row = GridView1.SelectedRow;

   if (GridView1.SelectedRow.RowIndex == 0)
   {
       //string selectedUser = GridView1.SelectedRow.Cells[0].ToString();
       Response.Redirect("CustomerUsePage.aspx?Customer_ID=" );
       BindGridview();
   }

   if (GridView1.SelectedRow.RowIndex == 3)
   {
       //string selectedUser = GridView1.SelectedRow.Cells[0].ToString();
       Response.Redirect("CustomerUsePage.aspx?Customer_ID=");
       BindGridview();
   }

}

这是 CustomerUsePage 上的代码:

protected void Page_Load(object sender, EventArgs e)
{
    string v = Request.QueryString["Customer_ID"];
    Response.Write(v);

    if (!IsPostBack)
    {
        BindControlvalues();    
    }
}

private void BindControlvalues()
{        
    con.Open();
    SqlCommand cmd = new SqlCommand(" sql query ", con);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    con.Close();
    DataSet ds = new DataSet();
    da.Fill(ds);
    Label5.Text = ds.Tables[0].Rows[3][8].ToString();
    Label4.Text = ds.Tables[0].Rows[3][0].ToString();
    Label1.Text = ds.Tables[0].Rows[3][1].ToString();
    Label2.Text = ds.Tables[0].Rows[3][3].ToString();
    Label3.Text = ds.Tables[0].Rows[3][5].ToString();          
}

正如所见,我通过索引这些数据来用从我的查询中收到的数据填充我的标签。我想摆脱这种情况并使用更有效的方法,但它现在有效。更重要的是,有没有办法根据我点击的客户来填充我的标签?现在点击任何客户都会产生相同的结果。我在想一些类似的东西:“如果选定的行索引 = 0”,但我知道这不起作用,因为此页面不存在 GridView。但是,逻辑是我想要的。有什么帮助吗?谢谢。

4

2 回答 2

0

我建议你使用RowCommand event

void GridView_RowCommand(Object sender, GridViewCommandEventArgs e)
  {
    if(e.CommandName=="Select")
    {
            var label = (Label)e.Item.FindControl("YourLabelId");
            var value = label.Text;
            Response.Redirect("CustomerUsePage.aspx?Customer_ID=" +value);

    }
  }

象素

<asp:gridview onrowcommand="GridView_RowCommand"/>

并添加引发事件的专栏

<columns>
                <asp:buttonfield buttontype="Link" 
                  commandname="Select" 
                  text="Select"/>

               <asp:templatefield headertext="Author Name">
                 <itemtemplate>
                     <asp:label id="YourLabelId" Text= '<%# Eval("Customer_ID") %>' runat="server"/>
                 </itemtemplate>
                </asp:templatefield>
</columns>
于 2012-10-11T17:58:02.827 回答
0

我使用 itemtemplates 和超链接对象。如果您需要更多,请告诉我。

这是一个示例。

该网站的粘贴如下:

回传方式:

<asp:TemplateField HeaderText="The Column header ">
    <ItemTemplate>
        <asp:HyperLink runat="server" id="MyLink"   
            Text="<%# Eval("ProjectName") %>"  
            NavigateUrl='Project.aspx?ProjectID=<%# Eval("DatasourceField") %>'>
        </asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>

非回发:

<asp:TemplateField HeaderText="The Column header ">
    <ItemTemplate>
        <a href='Project.aspx?ProjectID=<%# Eval("DatasourceField") %>'>
            <%# Eval("ProjectName") %> 
        </a>
    </ItemTemplate>
</asp:TemplateField>
于 2012-10-11T18:10:28.723 回答