0

テンプレートフィールドのあるグリッドビューがあります。templatefieldにチェックボックスを追加します。自動ポストバックはチェックボックスに当てはまります。

Load-pageとcretedcolumndynamicでグリッドを埋めます。

 if (!IsPostBack)
        {
         FillGrid();
        }

更新パネルを使用します

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
 <ContentTemplate>
<SharePoint:SPGridView ID="grid" AllowSorting="true" AllowFiltering="true"    CssClass="ms-listviewtable"  
runat="server" AutoGenerateColumns="false">
<RowStyle CssClass="ms-alternating" Height="10px" />
<Columns>
    <asp:TemplateField> 
        <ItemTemplate  >
            <asp:CheckBox ID="select" runat="server" 
                OnCheckedChanged="select_CheckedChanged" AutoPostBack="true"  />
            <input id="Display" type="hidden" runat="server" />
            <input id="itemID" type="hidden" runat="server" />
            <asp:Image ID="icon" runat="server" Height="10px" Visible="false"  />
        </ItemTemplate>
        <ItemStyle Width="35px" />
    </asp:TemplateField>
    <asp:TemplateField >
     </asp:TemplateField>
</Columns>
</SharePoint:SPGridView>
 </ContentTemplate>
  <Triggers>
<asp:AsyncPostBackTrigger ControlID="select" EventName="OnCheckedChanged" />
 </Triggers>
 </asp:UpdatePanel>

しかし、エラーを表示します:UpdatePanel'UpdatePanel1'のトリガーに対してID'select'のコントロールが見つかりませんでした。

私の問題は:チェックボックスが変更されたとき、ページを更新する

チェックされた変更後にページを更新したくない!

4

3 に答える 3

1

autopostback = "false"を設定するか、チェックボックスのautopostbackプロパティを削除する必要があります。autopostbackは実際にページを更新します。

于 2012-04-07T05:57:14.410 に答える
1

チェックボックスの autopostback プロパティを false に設定するとどうなるでしょうか?

また、実際にチェックボックスの onchange イベントを処理しようとしている場合は、グリッドを UpdatePanel でラップできます。ユーザーにはポストバックが表示されませんが、サーバー側のイベント処理の柔軟性は引き続き得られます。

于 2012-04-07T05:59:26.787 に答える
0

まず第一に、以下のようにテンプレート列を変更する必要があります

<asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="chkselect" runat="server" />
                <input id="Display" type="hidden" runat="server" />
                <input id="itemID" type="hidden" runat="server" />
                <asp:Image ID="imgicon" runat="server" Height="10px" Style="display: none;" ImageUrl="~/images/arrow_left.jpg" />
            </ItemTemplate>
            <ItemStyle Width="35px" />
        </asp:TemplateField>

サーバー側コードで itemdatabound イベントを処理するようになりました

Protected Sub SPGridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvBanner.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim chkselect As CheckBox = e.Row.FindControl("chkselect")
        Dim imgicon As Image = e.Row.FindControl("imgicon")
        If chkselect IsNot Nothing Then
            chkselect.Attributes.Add("onclick", "javascript:DoMyTask(this,'" + imgicon.ClientID + "')")
        End If
    End If
End Sub

以下のようにaspxページでJavaScript関数を指定します。

<script type="text/javascript" language="javascript">
    function DoMyTask(obj, imgid) {            
        var objCheck = obj.checked;
        var objimg = document.getElementById(imgid)
        if (objCheck == true) {
            objimg.style.display = "block";
            //set more attributes over here
        }
        else {
            objimg.style.display = "none";
            //set more attributes over here
        }
        var count = $(":checkbox:checked").length;
        alert('you have selected ' + count + ' Rows');
    }

</script>

これがあなたの助けになることを願っています...幸せなコーディング..

于 2012-04-07T06:59:44.503 に答える