我有以下转发器代码:
<asp:Repeater ID="repMain" runat="server" OnItemCommand="repMain_ItemCommand" EnableViewState="false">
<ItemTemplate>
<dmg:testcontrol runat="server" MyData=<%#Container.DataItem %>>
</dmg:testcontrol>
</ItemTemplate>
</asp:Repeater>
testcontrol用户控件如下所示:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestControl.ascx.cs" Inherits="TestRepeater.TestControl" %>
<asp:Literal runat="server" ID="litMain" Text="<%#MyData.MyValue %>"></asp:Literal>
<asp:DropDownList runat="server" ID="dropdownMain"></asp:DropDownList>
<asp:Button runat="server" ID="btnMain" Text="Click Me" CommandName="Update" CommandArgument="<%#dropdownMain.SelectedValue%>"/>
我是否可以通过dropdownMain.SelectedValue作为CommandArgument发送?
刚才它是一个空字符串。
由于
邓肯
PS这与ASP.NET Repeater not binding after ItemCommand有关,但我认为两者完全不同,不能分开。
答案 0 :(得分:2)
有点老问题,但我只是自己找到了答案。
CommandArgument="<%#dropdownMain.SelectedValue%>"
需要使用单引号看起来像这样! asp.net控件中的所有内联代码都必须以这种方式完成。
CommandArgument='<%#dropdownMain.SelectedValue%>'
答案 1 :(得分:0)
为什么不获取所选值,并在Command函数中使用它?
(为什么要尝试将它作为参数发送,从你可以在命令函数内部获取它的那一刻起,它就一样了)