【问题标题】:Passing a data list value in asp.net ( closed )在 asp.net 中传递数据列表值(已关闭)
【发布时间】:2012-08-02 06:17:27
【问题描述】:

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

<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=' 分配给变量 any_variable .....

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

我需要选定的 Text=' 以便我可以操纵信息以根据值显示另一个数据绑定控件。

谁能帮帮我?

【问题讨论】:

    标签: c# asp.net sql datalist


    【解决方案1】:

    我认为你必须使用项目绑定事件

    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;
    }
    

    【讨论】:

    • 感谢Waqar 的快速回复....我还是输了...现在的值被分配到1k 是吗? .....现在该值由什么数据类型组成? ....提前谢谢..
    • 感谢Waqar ...看起来很有效....与你们分享和讨论很好....为您和其他人祈祷所有美好的事物......再次......
    • @toneinacone 欢迎您。 lk 获取您的数据列表中存在的链接按钮的引用。并记得将最能帮助您的答案标记为您的答案。
    【解决方案2】:

    很简单:

    
     <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 和命令参数。现在你可以使用@987654321@ 做任何你想做的事情。

    void Item_Command(Object sender, DataListCommandEventArgs e) 
          {
             if(e.CommandName == "Assign") {
                 string userName = e.CommandArgument;
             }
    
          }

    另一种简单的方法是使用超链接代替链接按钮。

    &lt;asp:hyperlink id="link1" href='&lt;%#Eval("username","/yourpage.aspx?userName={0}")' /&gt;

    希望对你有帮助。

    【讨论】:

    • 嗨 Prashant .... 感谢您的想法...但是字符串似乎不适用于 e 对象 .... 但是如果我们直接分配给会话,它似乎可以工作.. .. 类似 .... Session["Picked_username_from_datalist"] = e.CommandArgument;
    【解决方案3】:

    您可以使用 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");
        }
    }
    

    【讨论】:

    • 嗨 Naresh .... 这个想法似乎可行 .... 谢谢 .... 真的很高兴与你们分享和讨论 ...
    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多