Tjena! Jag vet inte om jag har förstått dig rätt men om du vill ha fram vilken box som anropar är samt kontrollera om det är checkad eller ej borde det vara: Tja Just det...Checkbox kontrol + checked
Jag har ett lite problem med ett par checkboxar. Dom loopas ut från en databas och läggs i en datalist. På den har jag lagt en events ondatabound="event", så att den checkar dom i listan som är true i databasen. Jag har en <headertemplate><itemtemplate> inom itemtemplate har jag vanlige html kontroller förutom min checkbox som är en server kontrol. Det jag nu vill lösa är att när man trycker på en checkbox som är checkad vill jag skicka false till databasen så att den checkboxen i menyn blir avcheckad
Men nu kommer det kluriga. Hur vet jag vilken checkbox i listan som har loopats ut. Jag måste på något sätt lägga en hiddenfält i itemtemplate som skickar in id från databasen. Så att jag på nåt sätt vet vilken index som checkboxen ligger under. Och sen updatera databasen.
Här kommer koden:
<code>
Sub R1_ItemDataBound(Sender As Object, e As DataListItemEventArgs)
Dim MyCheckBox
If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then
MyCheckBox = e.Item.FindControl("CheckBox1")
If (e.Item.DataItem("MainMenu_IsActive") = true) Then
MyCheckBox.Checked = True
Else
MyCheckBox.Checked = False
End If
End If
End Sub
Sub CheckBox1_Click(sender As Object, e As EventArgs)
If (Page.IsPostBack) Then
' Hur ska jag göra ????
End If
End Sub
</SCRIPT>
<ASP:DATALIST ID="mainmenu" OnItemDataBound="do_ItemDataBound" RepeatColumns="0" RepeatDirection="Vertical" RUNAT="server">
<HEADERTEMPLATE>
</HEADERTEMPLATE>
<ITEMTEMPLATE>
<TR>
<TD HEIGHT="19" WIDTH="1" BGCOLOR="#FFFFFF"><IMG SRC="img/Space.gif" WIDTH="1" HEIGHT="1" ALT="" BORDER="0"></TD>
<TD width="15" BGCOLOR="#CCCCCC">
<asp:CheckBox id="CheckBox1" OnCheckedChanged="CheckBox1_Click" AutoPostBack="True" runat="server" />
</TD>
<TD width="1" bgcolor="#000000"></TD>
<TD width="1" bgcolor="#FFFFFF"></TD>
<TD HEIGHT="19" id="aa" WIDTH="163" CLASS="menu_td" onmouseover="this.className = 'menu_mouseover';" onmouseout="this.className = 'menu_td';">
?TypeID=<%#Container.DataItem("Menu")%>" class="menu_links" target="main"><%#Container.DataItem("Menu")%>
</TD>
</TR>
</code>
</ITEMTEMPLATE>
Hoppas nån kan hjälpa mig.Sv: Checkbox kontrol + checked
<code>
Public Sub CheckBox_Click(Obj As Object, E As EventArgs)
'--- deklarerar object samt tilldelar värde
Dim cbObject As System.Web.UI.WebControls.CheckBox = Obj
'--- om sidan är postad
If Page.IsPostBack Then
'--- om objektet är "checkat"
If cbObject.Checked = True Then
'--- vad som skall hända om checboxen är "checkad"
Else
'--- vad som skall hända om checboxen INTE är "checkad"
End If
End If
End Sub
</code>Sv: Checkbox kontrol + checked
Kanske förklara lite dåligt
Det är en meny som ska visa en checkad checkbox ifall databasfältet är true, för varje menylänk. Jag vill kunna checka för en ocheckad box och då ska sidan laddas om och uppdatera databasen med en true för det fältet.
Säg att jag har fem eller flera poster i databasen, en av dessa poster har värdet false, resten har true. För alla dom fälten som är true kommer checkboxen för den menylänken att checkas när det loopas ut. Den som är false får en ocheckad box. Ifall jag klickar på ocheckade boxen så ska databasen uppdateras med true för det fältet.
Frågan är ifall man kunde lägga ett hidden fält och skicka in id från meny posten i den. Och sen fråm min sub kolla ifall min checkbox har samma index som hidden fältet och på så sätt få värdet från hidden fältet(id från posten)
hmmm...Sv: Checkbox kontrol + checked
Så här gjorde jag.
<code>
Sub CheckBox1_Click(sender As Object, e As EventArgs)
If (Page.IsPostBack) Then
Dim dataCommBuilder As OleDbCommandBuilder
Call FetchData
dataCommBuilder = new OleDbCommandBuilder(dbAdapter)
Dim i As Integer
For i=0 To mainmenu.Items.Count-1
Dim IsChecked As Checkbox = mainmenu.Items(i).FindControl("CheckBox1")
If IsChecked Is sender Then
Dim MyInput As HtmlInputHidden = mainmenu.Items(i).FindControl("test")
'MyInput innehåller idet för posten
End If
Next
End If
End Sub
</code>