1

asp.netリピーターでクリックされたIDアイテムの値を取得しようとして問題が発生しました。私のリピーターにはダイアログを開く画像があり、そのダイアログを開いた状態で、[承認]をクリックすると、ApproveChange_Clickイベントが原因でリダイレクトされたときに、この値を.csファイルで取得したいと思います。リピーターで取得したいIDに対してDataBinder.Evalを実行していません。どうすればそれを達成できますか?セッション変数を使用する場合、.aspxページで値を設定する方法とその方法。前もって感謝します!

これはリピーターです:

<tr class="<%# Container.ItemIndex % 2 != 0 ? "" : "odd" %>">
     <td class ="approval-img"><a class ="approvalDialog" href='#'><img src="/Images/Approve.png" alt ="Approve"/></td></a>
     <td class ="approval-img"><a class ="declineDialog" href='#'><img src="/Images/Decline.png" alt ="Decline"/></td></a>
     ...
</tr>

そしてこれはダイアログです:

<div id="approval-form" style="display: none; cursor: default">
    <div class="approve-change">
        <ul>
        <li>
            <p><label>Reason</label></p>
            <textarea id="txtReason" runat="server" cols="1" rows="1" class="required"></textarea><br />
        </li>
        <li>
            <span>
            <asp:Button ID="btnApprove" runat="server" CssClass="blue" Text="Approve" ToolTip = "Approve" OnClick="ApproveChange_Click" />
            <button id="btnCancelApprove" class="blue">Cancel</button>
            </span>
        </li>
        </ul>
    </div>
</div>
4

2 に答える 2

2

ボタンのNamingContainerプロパティを使用して、RepeaterItem. ただし、「ID に対して DataBinder.Eval を実行していない」場合、ID をどこに保存したかは明確ではありません。

したがって、たとえば aHiddenFieldを使用Evalして、ID をそのValueプロパティに適用することをお勧めします。

リピーターのどこかに:

<asp:HiddenField ID="HiddenID" runat="server" Value='<%# Eval("ID") %>' />

これで、次の方法で取得できます。

protected void ApproveChange_Click(Object sender, EventArgs e)
{
    Button btn = (Button) sender;
    RepeaterItem item = (RepeaterItem)  btn.NamingContainer;
    HiddenField idField = (HiddenField) item.FindControl("HiddenID");
    int ID = int.Parse(idField.Value);
}
于 2012-12-04T16:22:54.387 に答える
0

私が見つけた解決策は次のとおりです: 最初: コマンド引数をイベントに送信する機会があるため、ImageButton のリピーターのタグを変更します。

<td class ="approval-img"><asp:ImageButton runat="server" CommandArgument = '<%# Eval("aux_approvalId")%>'  OnClick="getApprovalID_approve" ToolTip="Approve" ImageUrl="/Images/Approve.png" /></td>

したがって、OnClick イベントにリダイレクトされると、これで ID を取得し、ダイアログが開かれた後に取得します。

ImageButton btn = (ImageButton)(sender);
Session["ApprovalID"] = btn.CommandArgument;
string script = "OpenApprovalDialog();";
Page.ClientScript.RegisterStartupScript(typeof(Page), "", script, true);
于 2012-12-06T16:45:14.300 に答える