1

我有一个绑定到数据库的数据列表,现在标签更改为链接按钮

<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("username") 值被传递到新页面。

我正在考虑使用诸如 .... 之类的会话来传递它。

string any_variable ;
session["Picked_username_from_datalist"] = any_variable ;
response.redirect("newpage.aspx");

这样我将使用 session 传递的变量可以被操纵。

但我的问题是我不知道如何将 Text='<%# Eval("username") %> 分配给变量 any_variable .....

~~ 变量的赋值取决于绑定到数据库的数据绑定的文本 .... 例如 ... 第一个链接按钮文本是 username1 ,第二个是 username2 等等,基于我的 SQL 选择命令......

我需要选定的 Text='<%# Eval("username") %> 以便我可以操纵信息以根据该值显示另一个数据绑定控件。

有谁能够帮助我?

4

3 回答 3

5

您可以使用 DataList 的 onitemcommand="DataList1_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");
    }
}
于 2012-08-04T12:52:57.190 回答
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;
}
于 2012-08-04T12:24:44.107 回答
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和命令参数。现在你可以用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}")' />

我希望这能帮到您。

于 2012-08-04T12:25:31.780 回答