1

このコードを追加して、チェックボックスを使用してグリッドに列を取得しました。

<Columns>
    <asp:TemplateField HeaderText="Visitor"  HeaderStyle-Width="20" FooterStyle-HorizontalAlign="Center">
        <ItemTemplate>
            <asp:CheckBox ID="myCheckBox" runat="server"/>
        </ItemTemplate>
        <FooterStyle HorizontalAlign="Center" />
        <HeaderStyle Width="20px" />
        <ItemStyle HorizontalAlign="Center" />
    </asp:TemplateField>

チェックボックスの値を取得したいのですが、「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」エラー。ここで私はそれを呼び出そうとしましたが、エラーが発生しました:

Dim checkb As String
For Each row As GridViewRow In orderGrid.Rows
    Dim chk As CheckBox = CType(row.FindControl("myCheckBox"), CheckBox)
    **checkb  = Request.Form("myCheckBox")**
Next row

チェックボックスの正しい値を取得する方法はありますか?

4

4 に答える 4

0

このコードを試してください。これにより、cs コードで選択された ID が得られます。

<asp:TemplateField HeaderText="All">
   <HeaderStyle Width="3%" HorizontalAlign="Center" VerticalAlign="Middle" />
         <ItemStyle HorizontalAlign="center" VerticalAlign="Middle" />
   <HeaderTemplate>
         <input id="chkAll" type="checkbox" name="chkAll" onclick="javascript: checkall();" />
   </HeaderTemplate>
   <ItemTemplate>
         <input id="chkBox" name="chkBox" type="checkbox" value="<%# DataBinder.Eval(Container.DataItem, "CategoryId") %>" onclick="javascript: checkManual();" />
   </ItemTemplate>
 </asp:TemplateField>

および単一選択用のJavaScript関数の場合

function checkManual() {
    var intCheckVal;
    intCheckVal = 1;
    for (intCounter = 0; intCounter < (document.getElementsByName('chkBox').length); intCounter++) {
        if (document.getElementsByName("chkBox")[intCounter].checked == false)
            intCheckVal = 0;
    }
    if (intCheckVal == 1)
        document.getElementById("chkAll").checked = true;
    else
        document.getElementById("chkAll").checked = false;
}

そしてすべてをチェックする

function checkall() {
    for (intCounter = 0; intCounter < (document.getElementsByName('chkBox').length); intCounter++) {
        document.getElementsByName("chkBox")[intCounter].checked = document.getElementById("chkAll").checked;
    }
}

ボタンクリックイベントのcsコードで、選択したすべてのチェックボックスの値を取得できます

string MultiIDs = Request.Form["chkBox"].Replace("'", "");

これを確認してください。これは確実に機能します。

ありがとうございました。

于 2013-05-13T14:47:49.983 に答える