-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 が設定されていない場合、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 に答える