0

カスタムデータを一覧表示するリピーターがあります。ここで実行したいのは、asp:linkbuttonを使用して1つのページから別のページに変数を渡すことです。私が抱えている問題は、サブルーチンでリンクボタンを呼び出しようとすると、それが認識されないことです。リピーターにリンクボタンが見つかりませんでしたが、この場合は機能しないと思います。これが私のコードです:

    <asp:Repeater ID="rptList" runat="server" EnableViewState="false" DataSourceID="SqlDataSource3">
<ItemTemplate>
    <div>
    <p>
    <b>Title: </b> <asp:LinkButton ID="lbnCookieVar" OnClick="lbnCookieVar_Click" Text='<%# Eval("Job_Title")%>' runat="server" /> <br />
    <b>Status: </b><%# Eval("Status")%><br />
    <b>Department: </b><%# Eval("Department")%><br />
    <b>Date Position Available: </b><%# Eval("Date_Position_Available")%><br />
    </p>
    </div>
</ItemTemplate>
</asp:Repeater>

これが背後にあるコードです

     protected void lbnCookieVar_Click(object sender, EventArgs e)
{
    Session["Data"] = lbnCookieVar.Text;
    Response.Redirect("Application.aspx");
}
4

6 に答える 6

2

関数の「sender」引数を介してリンクボタンにアクセスする必要があります。

protected void lbnCookieVar_Click(object sender, EventArgs e)
{
    Session["Data"] = (sender as LinkButton).Text;
    Response.Redirect("Application.aspx");
}
于 2012-08-07T15:49:53.367 に答える
1

これを試して、動作するはずです:

Session["Data"] = (sender as LinkButton).Text;

詳細については、こちらをご覧ください:リピーターのリンクボタンのテキストを変更する

于 2012-08-07T15:50:57.877 に答える
1

醜いです、そしてあなたはあなたが必要とするよりこの方法をより難しくしています。

リピーターのItemCommandルーチンを使用してこれを取得しないのはなぜですか?次に、実行したいことのCommandArgumentを渡すだけです。

<asp:Repeater ID="rptList" runat="server" EnableViewState="false" 
    DataSourceID="SqlDataSource3" OnItemCommand="rptList_ItemCommand">
<ItemTemplate>
    <div>
    <p>
    <b>Title: </b> <asp:LinkButton ID="lbnCookieVar" CommandText="click" CommandArgument='<%# Eval("Job_Title")%>' Text='<%# Eval("Job_Title")%>' runat="server" /> <br />
    <b>Status: </b><%# Eval("Status")%><br />
    <b>Department: </b><%# Eval("Department")%><br />
    <b>Date Position Available: </b><%# Eval("Date_Position_Available")%><br />
    </p>
    </div>
</ItemTemplate>
</asp:Repeater>

コードビハインド:

誰が私のコードを変更したのかわかりませんが、あなたは間違っています。これをそのまま行うと、これがあなたのやり方です。二重引用符であるはずの「クリック」を誤って一重引用符で囲んでいました。

protected void rptList_ItemCommand(object sender, CommandEventArgs e)
{
   if (e.CommandName == "click")
   {
       Session["Data"] = e.CommandArgument.ToString();
       Response.Redirect("Application.aspx");
   }
}
于 2012-08-07T16:37:30.187 に答える
0
SessionStorage.LinkButtonText = Session["Data"] = ((LinkButton)sender).Text;

public class SessionStorage
{
    public Static String LinkButtonText
    {
        get
        {
            if (System.Web.HttpContext.Current.Session["LinkButtonText"] == null)
                return String.Empty;
            return Convert.ToString(
                       System.Web.HttpContext.Current.Session["LinkButtonText"]);
        }
        set
        {
            System.Web.HttpContext.Current.Session["LinkButtonText"] = value;
        }
    }
}
于 2012-08-07T16:16:59.353 に答える
0

リピーター/リストビュー内のコントロールの操作は、通常、少し奇妙になります。私はあなたの場合、あなたはただ次のことをすることができると思います:

Session["Data"] = ((LinkButton)sender).Text;
于 2012-08-07T15:50:48.857 に答える
0

こんにちはすべてこれは私がそれを修正した方法です!

<asp:Repeater ID="rptList" runat="server" EnableViewState="false" DataSourceID="SqlDataSource3">
<ItemTemplate>
    <div>
    <p>
    <b>Title: </b> <a href="CareerSummary.aspx?Job_Title=<%# Eval("Job_Title") %>&num=<%# Eval("num") %>"><%# Eval("Job_Title") %></a><br />
    <b>Status: </b><%# Eval("Status")%><br />
    <b>Department: </b><%# Eval("Department")%><br />
    <b>Date Position Available: </b><%# Eval("Date_Position_Available")%><br />
    </p>
    </div>
</ItemTemplate>
</asp:Repeater>

送信された変数を取得するページの後ろのコード:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {

        lblRow.Text = Request.QueryString["num"];
    }


}

このメソッドが機能するには、負荷がかかっている必要があります

于 2012-08-10T18:34:24.997 に答える