我有一个绑定到数据库的数据列表,现在标签已更改为链接按钮
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" >
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Eval("username") %>'>
</asp:LinkButton>
.....some other datalist item
</ItemTemplate>
</asp:DataList>
对于这种情况,我希望链接按钮启动一个新页面,其中Eval(“用户名”)值被传递到新页面。
我正在考虑使用诸如....之类的会话传递它。
string any_variable ;
session["Picked_username_from_datalist"] = any_variable ;
response.redirect("newpage.aspx");
这样我可以操纵我将使用会话传递的变量。
但我的问题是我不知道如何分配Text ='&lt;%#Eval(“username”)%&gt;到变量any_variable .....
~~变量的赋值取决于绑定到数据库的数据绑定文本....例如......第一个链接按钮文本是username1,第二个是username2,依此类推SQL select命令.....
我需要选择的Text ='&lt;%#Eval(“username”)%&gt;这样我就可以操纵信息,根据值显示另一个数据绑定控件。
有人能帮助我吗?
答案 0 :(得分:5)
您可以使用DataList的onitemcommand =“DataList ItemCommand”事件
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" onitemcommand="DataList1_ItemCommand" >
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Eval("username") %>' CommandArgument='<%# Eval("username") %>' CommandName="Redirect">
</asp:LinkButton>
.....some other datalist item
</ItemTemplate>
</asp:DataList>
服务器端代码
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "Redirect")
{
Session["Picked_username_from_datalist"] = e.CommandArgument;
Response.Redirect("newpage.aspx");
}
}
答案 1 :(得分:0)
我认为你必须使用项目约束事件
void Item_Bound(Object sender, DataListItemEventArgs e)
{
// here you can find the value as
LinkButton lk= (LinkButton)e.Item.FindControl("LinkButton1");
session["Picked_username_from_datalist"] = lk.Text;
}
答案 2 :(得分:0)
很简单:
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" >
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Eval("username") %>' CommandName="Assign" CommandArgument='<%# Eval("username") %>'>
</asp:LinkButton>
.....some other datalist item
</ItemTemplate>
</asp:DataList>
请注意添加了新属性CommandName
和Command Argument。现在,您可以使用ItemCommand
做任何您想做的事。
void Item_Command(Object sender, DataListCommandEventArgs e)
{
if(e.CommandName == "Assign") {
string userName = e.CommandArgument;
}
}
另一种简单的方法是使用超链接代替链接按钮。
<asp:hyperlink id="link1" href='<%#Eval("username","/yourpage.aspx?userName={0}")' />
我希望这会对你有所帮助。