我有一个问题需要一些解释,所以我会尽量清楚。我正在使用几个网页。一个(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。但是,逻辑就是我想要的。有帮助吗?感谢。
答案 0 :(得分: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);
}
}
.aspx的
<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>
答案 1 :(得分:0)
我使用itemtemplates和超链接对象。如果您需要更多,请告诉我。
这是sample.
该网站的粘贴如下:
回发方法:
<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>