-1

我有一个用户控件,其中包含一个由复选框组成的数据列表。由于我无法通过脚本传递用户控件,我试图用选定的值形成一个标签,我该怎么做

<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>

这是我正在使用的用户控件。如果我将 autopostback='true' 赋予复选框,我将获得选中的值,但会从调用服务器返回错误。如果没有自动回发调用服务器调用服务器端方法,但无法获取检查值

    currentPageStatus = document.getElementById("lblStatus").innerText;
    var iv='<%= ucchkLst.funcGetcheckedIDString() %>';
    document.getElementById("lblChkdids").innerText = iv;
    CallServer(currentPageStatus,'');

如果复选框的 autopostback=true 我得到了我想要的 iv,但在调用服务器返回错误。如果 autopostback not set iv 为空且 callserver 成功

4

1 回答 1

1

您可以在用户控件中使用公共属性并传递选定的值

public StringBuilder YourValues
{
   get;
   set; 
}

如果你想得到这个属性,只需尝试你的 aspx

UserControl uc = (UserControl)this.FindControl("yourId");

var 结果 = 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);
   }
}
于 2012-08-29T07:57:16.657 回答