如何通过脚本访问usercontrol值

时间:2012-08-29 07:50:51

标签: c# javascript user-controls

我有一个带有数据列表的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成功

1 个答案:

答案 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);
   }
}