Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1180
  • Last Modified:

Change AutoPostBack setting on a datagrid column from server-side VB.NET code.

I have a datagrid with columns that are bound to a datasource from SQL server table.  The HTML code is the following;

<asp:datagrid id="dgAddressCorrection" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 180px" AllowPaging="True" OnPageIndexChanged="dgAddressCorrection_Change" runat="server" CssClass="WebControl_DataGridDef" PageSize="100" Width="1468px" AutoGenerateColumns="False" AllowSorting="True">
<Columns>
      <asp:BoundColumn Visible="False" DataField="SourceID"></asp:BoundColumn>
      <asp:BoundColumn DataField="Name" SortExpression="Name" HeaderText="Name"></asp:BoundColumn>
      <asp:BoundColumn DataField="Address" SortExpression="Address" HeaderText="Address"></asp:BoundColumn>
      <asp:BoundColumn DataField="Phone" SortExpression="Phone" HeaderText="Main Phone"></asp:BoundColumn>
      <asp:TemplateColumn>
            <ItemTemplate>
                  <asp:Button id="btnEdit" Text="Edit" Runat="server" Width="50px" CommandName="EditAddressCorrection" CssClass="WebControl_ButtonDef"></asp:Button>
            </ItemTemplate>
      </asp:TemplateColumn>
      <asp:TemplateColumn HeaderText="Overridden" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
            <ItemTemplate>
                  <asp:CheckBox id="IsAddressOverriddenField" AutoPostBack="True" OnCheckedChanged="EnableSavebtn" Checked='<%# DataBinder.Eval(Container.DataItem,"IsAddressOverridden") %>' runat="server" CssClass="WebControl_CheckBox">
                  </asp:CheckBox>
            </ItemTemplate>
      </asp:TemplateColumn>
</Columns>
</asp:datagrid>

On the server-side, I turn the AutoPostBack to false on the CheckBox column (ID=IsAddressOverriddenField) with the following code;

    Sub EnableSavebtn(ByVal sender As Object, ByVal e As EventArgs)
        btnSaveOvr.Enabled = True
        Dim i As Integer
        For i = 0 To (dgAddressCorrection.Items.Count - 1)
            Dim myCheckBox2 As CheckBox = CType(dgAddressCorrection.Items(i).Cells(5).Controls(1), CheckBox)
            myCheckBox2.AutoPostBack = False
        Next
    End Sub

This works, but I have to turn the AutoPostBack to false for every row in the datagrid.  Is there a way to change the AutoPostBack for the whole column instead of doint it for every row?  I only need to have AutoPostBack set to true for the first time the user click in one of the CheckBox in the datagrid, after that first click, I do not need AutoPostBack set to true.
0
jeandoiron
Asked:
jeandoiron
  • 2
2 Solutions
 
tomv011397Commented:
you will need to write some Javascript to do this, you COULD do it in code, but it is very ugly to do. (on the if ispostback, set the control to postback = false)

the javascript can be set to do a submit on the first check only etc.

Tom
0
 
Javert93Commented:
This code should do what you are asking:

    Public Sub dgAddressCorrection_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs) Handles dgAddressCorrection.ItemDataBound
        AddHandler CType(e.Item.Cells(5).Controls(1), CheckBox).CheckedChanged, OnItemCheckedChanged
    End Sub

    Public Sub OnItemCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim cb As CheckBox = CType(sender, CheckBox)
        If Not cb.Checked Then cb.AutoPostBack = False
    End Sub

I wans't able to test it, but it should work.
0
 
Javert93Commented:
However, that disables the AutoPostBack for the each check box when the user clicks on it.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now