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");

セッションを使用して渡す変数を操作できるようにします。

しかし、私の問題は、 Text='<%# Eval("username") %> を変数 any_variable に割り当てる方法がわからないことです.....

~~ 変数に割り当てられた値は、データベースにバインドされたデータバインドのテキストに依存します....たとえば... 1 番目のリンクボタンのテキストは username1 で、2 番目のリンクボタンのテキストは 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;
         }

      }

もう 1 つの簡単な方法は、リンク ボタンの代わりにハイパーリンクを使用することです。

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

これがお役に立てば幸いです。

于 2012-08-04T12:25:31.780 に答える