首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从中继器控件检索要在模式弹出窗口中显示的详细信息

如何从中继器控件检索要在模式弹出窗口中显示的详细信息
EN

Stack Overflow用户
提问于 2013-06-07 23:52:14
回答 4查看 3.4K关注 0票数 0

我有一个转发器控件,它显示一个图像和一些基本信息,如DateTime和产品Id。在单击图像时,我需要运行另一个查询,并在一个单独的弹出窗口中显示详细信息。我知道如何做弹出窗口。我想知道如何从中继器获取DateTime和ProductId,并在图像的按钮单击事件中使用它们?

下面是我的中继器代码:

代码语言:javascript
运行
复制
<asp:Repeater ID="rptMonitorSummary" runat="server" OnItemDataBound="rptMonitorSummary_OnItemDataBound">
    <ItemTemplate>
        <asp:Panel ID="Pnl" runat="server">
            <li class="ui-widget-content ui-corner-tr">
                <h5 class="ui-widget-header">
                    <%# Eval("Name").ToString().Length > 9 ? (Eval("Name") as string).Substring(0, 9) : Eval("Name")%>
                </h5>
                <div id="divHover">
                    <asp:ImageButton Width="80px" ID="btnPerformanceImage" onclick="btnPerformanceImage_Click" runat="server" Height="45px">
                    </asp:ImageButton>
                </div>
                <div class="tooltip" style="display: none">
                    <div style="text-align: center; font-weight: bold;">
                        <%# Eval("DateTime") %><br />
                    </div>
                    <div style="text-align: center; font-weight: normal">
                        ErrorRatingCalls =
                        <%# Eval("ProductId")%><br />
                    </div>
                    <div style="text-align: center; font-weight: normal">
                        TotalRatingCalls =
                        <%# Eval("TotalCalls")%>
                        <br />
                    </div>
                    <div style="text-align: center; font-weight: normal">
                        SuccessRate =
                        <%# Eval("PassPercentage") + "%" %>
                    </div>
                </div>
            </li>
        </asp:Panel>
    </ItemTemplate>
</asp:Repeater>

我还有下面的按钮点击事件:

代码语言:javascript
运行
复制
protected void btnPerformanceImage_Click(object sender, EventArgs e)
{

    ScriptManager.RegisterStartupScript
            (this, this.GetType(), "callScriptFunction", "ViewModelPopup1();", true);
}

我想知道的是,当我单击中继器控件内的图像时,如何获取已绑定到中继器控件的值

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-08 00:07:01

您应该使用Repeater控件的ItemCommand事件,而不是处理单击按钮本身。作为CommandArgument,您可以传递ProductId,然后在处理程序中使用它从DB中检索其余信息。或者,您甚至可以将所有需要的值作为单个字符串包含到CommandArgument中,然后进行一些解析:

代码语言:javascript
运行
复制
<asp:Repeater ... OnItemCommand="rptMonitorSummary_ItemCommand" ... >
   ...
   <asp:ImageButton ... CommandName="ShowPopup" CommandArgument='<%# Eval("ProductId") + "," + Eval("DateTime") %>'>
   </asp:ImageButton>
   ...
</asp:Repeater>

处理程序可能如下所示:

代码语言:javascript
运行
复制
protected void rptMonitorSummary_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
    string[] tokens = e.CommandArgument.ToString().Split(',');
    int productId = int.Parse(tokens[0]);
    DateTime dateTime = Date.Time.Parse(tokens[1]);
    // the rest of the handling here
}
票数 1
EN

Stack Overflow用户

发布于 2013-06-08 00:06:17

使用OnItemCommand事件从中继器控件中提取值。

代码语言:javascript
运行
复制
<asp:Repeater ID="rptMonitorSummary" runat="server" OnItemDataBound="rptMonitorSummary_OnItemDataBound" OnItemCommand="rptMonitorSummary_ItemCommand">

。。。

代码语言:javascript
运行
复制
<asp:ImageButton Width="80px" ID="btnPerformanceImage" CommandName="Popup" runat="server" Height="45px"></asp:ImageButton>

。。。

代码语言:javascript
运行
复制
protected void rptMonitorSummary_ItemCommand(object source, RepeaterCommandEventArgs e)  
{  
    if (e.CommandName == "Popup")  
    {
        DataRowView row = ((DataRowView)e.Item.DataItem).Row;

        string data1 = Convert.ToString(row["Data1"]);
        string data2 = Convert.ToString(row["Data2"]);

        ScriptManager.RegisterStartupScript
                (this, this.GetType(), string.Format("callScriptFunction", "ViewModelPopup1('{0}','{1}');", data1, data2), true);
    }  
}
票数 1
EN

Stack Overflow用户

发布于 2013-06-08 00:06:49

在转发器中使用OnItemCommand="rptMonitorSummary_ItemCommand“,而不是按钮中的OnClick

然后在代码后面

代码语言:javascript
运行
复制
    protected void rptMonitorSummary_ItemCommand(object sender, RepeaterCommandEventArgs e)
    {
          //  e.CommandName and e.CommandArgument will let you know what was clicked
    }

您的按钮可能如下所示

代码语言:javascript
运行
复制
    <asp:Button runat="server" ID="btnPerformanceImage" Text="Whatever" CommandName="OpenImage" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ProductId") %>' />

这样你就可以知道用户点击了什么,并可以根据需要更改弹出窗口

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16988189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档