我有一个带有数据列表的usercontrol,其中包含复选框。由于我无法通过脚本传递usercontrol,我试图形成一个带有选定值的标签,我该怎么做呢
<asp:DataList id="checkedDataList" runat="server" RepeatLayout="Flow" BorderStyle="Inset" BorderWidth="1px"
Width="100%" style="OVERFLOW: auto" BackColor="White" Height="150px" CssClass="bodytext">
<ItemTemplate>
<asp:CheckBox id=chkBxItems CssClass="bodytext" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>' runat="server" BackColor="White" ToolTip='<%# DataBinder.Eval(Container.DataItem, "Name") %>'>
</asp:CheckBox>
<asp:Label id=lblID Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>' runat="server" Visible="False">
</asp:Label>
</ItemTemplate>
</asp:DataList>
这是我正在使用的usercontrol。如果我给复选框autopostback ='true',我将获得选中的值,但从callserver返回错误。如果没有autopostback callserver调用服务器端方法,但无法获取选中的值
currentPageStatus = document.getElementById("lblStatus").innerText;
var iv='<%= ucchkLst.funcGetcheckedIDString() %>';
document.getElementById("lblChkdids").innerText = iv;
CallServer(currentPageStatus,'');
如果autopostback = true对于复选框,我得到我想要的iv,但在callserver返回错误。如果未设置autopostback,则iv为空,且callserver成功
答案 0 :(得分:1)
您可以在用户控件中使用公共属性并传递选定的值
public StringBuilder YourValues
{
get;
set;
}
如果你想获得这个属性,只需尝试你的aspx
UserControl uc = (UserControl)this.FindControl("yourId");
var result = uc.YourValues.ToString();
您可以获得复选框值
YourValues = new StringBuilder();
foreach (DataListItem item in myDataList.Items)
{
var myCheckBox = (CheckBox)item.FindControl ("myCheckBoxId");
if(myCheckBox.Selected)
{
YourValues.Append(myCheckBox.Text);
}
}