![]() |
Howto bind CheckBox to the datagrid/ Then update the database field when the checkbox is clicked.
I am trying to update the database field when the checkbox is clicked.
I am trying to modified the following solution but.. got stuck on the ItemCommand Events where Dim prodchknew As CheckBox = e.Item.FindControl("chk") cannot find the control. I am trying to put the ItemCommand Code into ItemBound Event but seems to be stuck on the above line .. Anyone got ideas? Thanks a bunch, Joey Solution: webform1.aspx <asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 9px; POSITION: absolute; TOP: 15px" runat="server" AutoGenerateColumns="False" DataKeyField="Productid"> <Columns> <asp:TemplateColumn HeaderText="ProductName"> <ItemTemplate> <asp:CheckBox id=chk runat="server" Text =<%# DataBinder.Eval(Container.DataItem, "ProductName") %> checked='<%# DataBinder.Eval(Container.DataItem, "Discontinued") %>'> </asp:CheckBox> </ItemTemplate> </asp:TemplateColumn> <asp:ButtonColumn ButtonType="PushButton" CommandName="Update" Text="Update"></asp:ButtonColumn> </Columns> </asp:datagrid> webform1.asp.vb Step 1:Simple Binding with the DataGrid. The Products Table has the Field Discontinued (DataType:bit) Based on the value 0/1 of the Discontinued field uncheck/check the Checkbox. Dim myconnection As SqlConnection Dim myda As SqlDataAdapter Dim mycmd As SqlCommand Dim ds As DataSet Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then bindData() End If End Sub Sub bindData() myconnection = New SqlConnection("Server=localhost;uid=sa;password=;d atabase=northwind;") myda = New SqlDataAdapter("Select * from Products where productid<4", myconnection) ds = New DataSet() myda.Fill(ds, "AllTables") DataGrid1.DataSource = ds DataGrid1.DataBind() End Sub Step 2: If the user check's/uncheck's the original value of the Checkbox and clicks the button the new checkbox value should be stored in the Database table. Private Sub DataGrid1_ItemCommand(ByVal source As Object, _ ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles DataGrid1.ItemCommand Dim prodchknew As CheckBox = e.Item.FindControl("chk") Dim updval As String If prodchknew.Checked Then updval = "1" Else updval = "0" End If If e.CommandName = "Update" Then myconnection = New SqlConnection("Server=localhost;uid=sa;password=;d atabase=northwind;") Dim strsql As String = "Update Products set Discontinued='" & updval & "'" & _ " where Productid=" & DataGrid1.DataKeys(CInt(e.Item.ItemIndex)) ' Response.Write(strsql) mycmd = New SqlCommand(strsql, myconnection) myconnection.Open() mycmd.ExecuteNonQuery() bindData() End If End Sub Sushila S. Patel, Microsoft .NET MVP |
Re: Howto bind CheckBox to the datagrid/ Then update the database field when the checkbox is clicked.
Can you post your ItemDataBound method?
Whenever I have to put code in that method, I always forget to make sure that the current item isn't a header or footer: If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then End If "Joey Pang" <joeyjypang@netscape.net> wrote in message news:%23ERL$uWbFHA.3464@tk2msftngp13.phx.gbl... >I am trying to update the database field when the checkbox is clicked. > > I am trying to modified the following solution but.. got stuck on the > ItemCommand Events where > Dim prodchknew As CheckBox = e.Item.FindControl("chk") > cannot find the control. > > I am trying to put the ItemCommand Code into ItemBound Event but seems to > be stuck on the above line .. > Anyone got ideas? > > Thanks a bunch, > Joey > > > Solution: > webform1.aspx > <asp:datagrid id="DataGrid1" > style="Z-INDEX: 101; LEFT: 9px; POSITION: absolute; TOP: 15px" > runat="server" AutoGenerateColumns="False" > DataKeyField="Productid"> > <Columns> > <asp:TemplateColumn HeaderText="ProductName"> > <ItemTemplate> > <asp:CheckBox id=chk runat="server" > Text =<%# DataBinder.Eval(Container.DataItem, "ProductName") %> > checked='<%# DataBinder.Eval(Container.DataItem, "Discontinued") %>'> > </asp:CheckBox> > > </ItemTemplate> > </asp:TemplateColumn> > <asp:ButtonColumn ButtonType="PushButton" > CommandName="Update" Text="Update"></asp:ButtonColumn> > </Columns> > </asp:datagrid> > > > > webform1.asp.vb > Step 1:Simple Binding with the DataGrid. The Products Table has the Field > Discontinued (DataType:bit) Based on the value 0/1 of the Discontinued > field uncheck/check the Checkbox. > Dim myconnection As SqlConnection > Dim myda As SqlDataAdapter > Dim mycmd As SqlCommand > Dim ds As DataSet > Private Sub Page_Load(ByVal sender As System.Object, ByVal e As > System.EventArgs) Handles MyBase.Load > If Not Page.IsPostBack Then > bindData() > End If > End Sub > Sub bindData() > myconnection = New > SqlConnection("Server=localhost;uid=sa;password=;d atabase=northwind;") > myda = New SqlDataAdapter("Select * from Products where > productid<4", myconnection) > ds = New DataSet() > myda.Fill(ds, "AllTables") > DataGrid1.DataSource = ds > DataGrid1.DataBind() > End Sub > > > > Step 2: If the user check's/uncheck's the original value of the Checkbox > and clicks the button the new checkbox value should be stored in the > Database table. > Private Sub DataGrid1_ItemCommand(ByVal source As Object, _ > ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles > DataGrid1.ItemCommand > Dim prodchknew As CheckBox = e.Item.FindControl("chk") > Dim updval As String > If prodchknew.Checked Then > updval = "1" > Else > updval = "0" > End If > > If e.CommandName = "Update" Then > myconnection = New > SqlConnection("Server=localhost;uid=sa;password=;d atabase=northwind;") > Dim strsql As String = "Update Products set Discontinued='" & > updval & "'" & _ > " where Productid=" & DataGrid1.DataKeys(CInt(e.Item.ItemIndex)) > ' Response.Write(strsql) > mycmd = New SqlCommand(strsql, myconnection) > myconnection.Open() > mycmd.ExecuteNonQuery() > bindData() > End If > End Sub > > > > > Sushila S. Patel, Microsoft .NET MVP > |
Re: Howto bind CheckBox to the datagrid/ Then update the database field when the checkbox is clicked.
This page has a good example for doing something when a checkbox in a
datagrid is changed: http://www.geekswithblogs.net/sgreen.../12/14871.aspx This is basically what it says: In the aspx page, modify the checkbox tag by adding the OnCheckedChanged attribute, and setting it to the name of the sub that you just created above. You'll also need autopostback set to true. <ItemTemplate> <asp:CheckBox id="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="Check_Clicked">asp:CheckBox> > Now when the checkbox is clicked, the Check_Clicked event will be fired. Add the following code to the Check_Clicked procedure: Protected Sub Check_Clicked(ByVal sender As Object, ByVal e As EventArgs) Dim ck1 As CheckBox = CType(sender, CheckBox) Dim dgItem As DataGridItem = CType(ck1.NamingContainer, DataGridItem) 'now we've got what we need! Label1.Text = "You selected row " & dgItem.Cells(0).Text End Sub |
Re: Howto bind CheckBox to the datagrid/ Then update the database field when the checkbox is clicked.
Thank you so much Kim... :D Let met try it out :D
"Kim Quigley" <kimTquigley@hotmail.com> wrote in message news:OYjJQ2ebFHA.1404@TK2MSFTNGP09.phx.gbl... > This page has a good example for doing something when a checkbox in a > datagrid is changed: > > http://www.geekswithblogs.net/sgreen.../12/14871.aspx > > This is basically what it says: > > In the aspx page, modify the checkbox tag by adding the OnCheckedChanged > attribute, and setting it to the name of the sub that you just created > above. You'll also need autopostback set to true. > <ItemTemplate> > <asp:CheckBox id="CheckBox1" runat="server" AutoPostBack="True" > OnCheckedChanged="Check_Clicked">asp:CheckBox> >> > > > Now when the checkbox is clicked, the Check_Clicked event will be > fired. Add the following code to the Check_Clicked procedure: > > Protected Sub Check_Clicked(ByVal sender As Object, ByVal e As EventArgs) > Dim ck1 As CheckBox = CType(sender, CheckBox) > Dim dgItem As DataGridItem = CType(ck1.NamingContainer, > DataGridItem) > 'now we've got what we need! > Label1.Text = "You selected row " & dgItem.Cells(0).Text > End Sub > > > |
Re: Howto bind CheckBox to the datagrid/ Then update the database field when the checkbox is clicked.
It worked!! Thank you Thank you Kim :D :D :D You save my day...
"Kim Quigley" <kimquigley@hotmail.com> wrote in message news:OYjJQ2ebFHA.1404@TK2MSFTNGP09.phx.gbl... > This page has a good example for doing something when a checkbox in a > datagrid is changed: > > http://www.geekswithblogs.net/sgreen.../12/14871.aspx > > This is basically what it says: > > In the aspx page, modify the checkbox tag by adding the OnCheckedChanged > attribute, and setting it to the name of the sub that you just created > above. You'll also need autopostback set to true. > <ItemTemplate> > <asp:CheckBox id="CheckBox1" runat="server" AutoPostBack="True" > OnCheckedChanged="Check_Clicked">asp:CheckBox> >> > > > Now when the checkbox is clicked, the Check_Clicked event will be > fired. Add the following code to the Check_Clicked procedure: > > Protected Sub Check_Clicked(ByVal sender As Object, ByVal e As EventArgs) > Dim ck1 As CheckBox = CType(sender, CheckBox) > Dim dgItem As DataGridItem = CType(ck1.NamingContainer, > DataGridItem) > 'now we've got what we need! > Label1.Text = "You selected row " & dgItem.Cells(0).Text > End Sub > > > |
| All times are GMT. The time now is 10:15 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.