按下按钮时,我正试图让我的datalist打开一个模态弹出窗口。我的问题是数据切换和数据目标不能在我的数据列表中的asp:Button上运行。但只使用按钮,按钮的问题是我不能使用CommandArgument,我需要在我的模态上的datalist节目上选择该项目。
<ItemTemplate>
<div>
<asp:Image CssClass="center-block" Width="200px" Height="200px" ImageUrl='<%# "\\productImages\\" + Eval("productImage") %>' runat="server" />
<br />
<b><%# Eval("ProductName") %></b>
<button id="btnmod" runat="server" type="button" class="btn-success btn-xs pull-right" data-toggle="modal" data-target="#myModal">Buy</button>
<asp:Button data-toggle="modal" data-target="#myModal" CssClass="btn-default pull-right btn-xs" ID="btnBuy" runat="server" Text="Buy" CommandName="Buy" CommandArgument='<%# Eval("productID") %>'/>
<b class="pull-right">$<%#string.Format("{0:n2}",Eval("ProductPrice")) %></b>
<br />
</div>
这是我的c#代码加载我的模态:
protected void dlProducts_ItemCommand(object source, DataListCommandEventArgs e)
{
DAL mydal = new DAL(conn);
string productID = Convert.ToString(e.CommandArgument);
mydal.AddParam("productID", productID);
DataSet ds = mydal.ExecuteProcedure("spGetProducts");
lblmodName.Text = ds.Tables[0].Rows[0]["productName"].ToString();
lblmoddescription.Text = ds.Tables[0].Rows[0]["productDescription"].ToString();
modimgprod.ImageUrl = "\\productImages\\" + ds.Tables[0].Rows[0]["productImage"].ToString();
}
现在,如果我按下“按钮”它会显示模态但是空的,如果我点击asp:按钮它会加载数据并将其放入模态但不会显示模态。所以,现在如果你再次按下按钮,现在它已经填满了。我一直在做一些研究,也许我可以在点击“按钮”时触发点击asp:按钮的事件,并且没有运气。我被困住了,非常感谢所有的帮助!
答案 0 :(得分:1)
在没有看到页面其余部分的情况下做一个小假设,你正在对服务器进行PostBack以填充模态对话框。这会触发页面完全刷新,因此您的数据属性对对话框的显示没有任何影响。
&#34;最快&#34; route将在您的ItemComment代码中注册一个启动JS,告诉模式显示。我将很快用完整的脚本更新帖子。
假设您在页面中包含了jQuery,您可以在方法的底部执行类似的操作。
Page.ClientScript.RegisterStartupScript(this.GetType(), "DialogOpen", "$('#myModal').modal('show');", true);
这将添加一个脚本块,在刷新时打开对话框。
现在,未来,这可以通过更好的方式完成,但要实现这一目标还需要更多。