Jag har en datagrid där jag skriver ut namn och en checkbox vid varje namn. Vad hade du tänkt dig att Checkbox.sender skulle vara för något? Sender finns inte som metod på klassen CheckBox, precis som flemeddelandet skriver. Metoden skullde dessutom behöva vara Shared, dvs ej knutet till ett objekt såsom du skrivit koden. Jag fick tipset att göra så i ett annat forum. Jag fick den här c# kodencheckbox.sender
När användaren klickar i checkboxen ska en sub köras
Suben ser ut så här
<code>
Public Sub insert(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Dim tbmatchid As TextBox = e.Item.FindControl("match_id")
Dim matchid As String = tbmatchid.Text
Dim dplkapten As DropDownList = e.Item.FindControl("tbkapten")
Dim kapten As Integer = CInt(dplkapten.SelectedItem.Value)
Dim dplFemma As DropDownList = e.Item.FindControl("femma")
Dim femma As Integer = CInt(dplFemma.SelectedItem.Value)
Dim dplposition As DropDownList = e.Item.FindControl("position")
Dim position As Integer = CInt(dplposition.SelectedItem.Value)
row = (CType(((CheckBox.sender).Parent.Parent).ItemIndex, DataGridItem))
check_id = CType(datagrid1.DataKeys(row), Integer)
Dim objcmd1 As New OleDbCommand _
("SELECT * from trupper where id = " & check_id & "", objconn)
Dim dr As OleDbDataReader
objconn.Open()
Dim id1 As String
If dr.Read() = True Then
spelar_id = dr("id")
lag_id = dr("lag_id")
nummer = dr("nummer")
Dim strsql As String = "insert into matchprotokoll_spelare(match_id,lag_id,spelar_id,nummer,position, femma,kapten) values (" & matchid & "," & lag_id & "," & spelar_id & "," & nummer & "," & position & "," & femma & ",'" & kapten & "')"
Dim objcmd As New OleDbCommand(strsql, objconn)
objconn.Close()
objcmd.Connection.Open()
objcmd.ExecuteNonQuery()
objcmd.Connection.Close()
End If
End Sub
</code>
Men visual studio klagar på den här raden
<code>
row = (CType(((CheckBox.sender).Parent.Parent).ItemIndex, DataGridItem))
</code>
fel
'sender' is not a member of 'System.Web.UI.WebControls.CheckBox'.
Checkboxen ser ut så här
<code>
<asp:CheckBox id="spelar" AutoPostBack="True" Enabled="true" OnCheckedChanged="insert" Runat="server" />
</code>Sv: checkbox.sender
Mitt tips är:
<code>
Option Explicit On
Option Strict On
</code>
Då finns det en chans för dig att få kontroll vad det är för variabler du leker runt med.
/TommySv: checkbox.sender
<code>
protected void CheckedChanged(object sender, System.EventArgs e) {
//På vilken rad checkboxen du tryckte på finns
int Row = ((DataGridItem)((CheckBox.sender).Parent.Parent).ItemIndex;
//vilken du sedan kan använda för att ex ta ut en datakey (i detta fallet id för den rad jag ville uppdater)
int myID = (int)MyDataGrid.DataKeys[Row];
}
</code>
Finns det något annat sätt att göra detta på?