webForumDet fria alternativet

Checkbox i datagrid

7 svar · 316 visningar · startad av aleborg

aleborgMedlem sedan jan. 20013 341 inlägg
#1

Jag har en datagrid med en checkbox på varje rad och försöker att få OnCheckedChanged att fungera

<asp:datagrid id="gridFolderList" CssClass="table_600_Grey" Runat="server" AutoGenerateColumns="False" DataKeyField="FPath">
<Columns>
...
<asp:TemplateColumn HeaderText="R">
<ItemTemplate>
<asp:CheckBox id="Fread" runat="server" OnCheckedChanged="Fread_oncheckedchanged" AutoPostBack="True"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
...
</Columns>
</asp:datagrid>
		public void Fread_oncheckedchanged(object sender, DataGridItemEventArgs e)
		{
			CheckBox cb = (CheckBox)sender;
			Response.Write(e.Item.ItemIndex);
		}

Men får felet
CS0123: Method 'WebCreSiterWeb.user.tools_file_manager.Fread_oncheckedchanged(object, System.Web.UI.WebControls.DataGridItemEventArgs)' does not match delegate 'void System.EventHandler(object, System.EventArgs)'

Vad gör jag fel?

Engine^Medlem sedan dec. 20003 887 inlägg
#2

Byt från DataGridItemEventArgs e till EventArgs e.

DinoMedlem sedan sep. 20011 914 inlägg
#3

Re: Checkbox i datagrid

DataGridItemEventArgs är för datagriden, ckeckboxen har endast EventArgs och därifrån kan du inte få fram DataGridens e.Item.ItemIndex.

public void Fread_oncheckedchanged(object sender, EventArgs e)
{
   CheckBox cb = (CheckBox)sender;
   if(cb.Checked){
      Response.Write(cb.ID);
   } 
}

red// en minut för sen :)

aleborgMedlem sedan jan. 20013 341 inlägg
#4

Problemet är att jag måste ha fram den i public void Fread_oncheckedchanged, det är tack vare den som jag vet vad som har kryssats i och ska ändras i den framtida koden!

aleborgMedlem sedan jan. 20013 341 inlägg
#5

någon?

m_soderlundMedlem sedan sep. 20026 425 inlägg
#6

Jag tycker att koden ser korrekt ut, men måste fråga om du har testat med att sätta AutoPostBack = "False" i checkboxen? Jag har haft lite problem med just AutoPostBack och har löst det genom att sätta värdet till True|False beroende på hur min kod skulle fungera. :)
Testa i alla fall!

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#7

Jag har gjort så här där jag har dropdownlistor som uppdaterar en textbox.

Du kanske kan göra på ett liknande sätt med dina checkboxar

    Public Sub getNumber1(ByVal sender As Object, ByVal e As EventArgs)
        Dim griditem As DataGridItem
        For Each griditem In dgBTeam.Items
            Dim ddlNumber As DropDownList = griditem.FindControl("ddlBPlayer")
            Dim _spelarID As Integer = ddlNumber.SelectedItem.Value
            Dim tbNumber As TextBox = griditem.FindControl("tbBNumber")
            Dim objGetNumber As New CreateprotokollBusinessL()
            Dim Number As String = objGetNumber.getNumber(_spelarID)
            tbNumber.Text = Number
        Next
    End Sub

Dropdownlisten ser ut så här

<asp:dropdownlist id="ddlBPlayer" runat="server" datatextfield="Namn" datavaluefield="spelarID" autopostback="True" onselectedindexchanged="getNumber" />
DinoMedlem sedan sep. 20011 914 inlägg
#8

Här är en fuling lösning. :)

private void gridFolderList_ItemCreated(object sender, DataGridItemEventArgs e) 
{
   if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
      TableCell td = (TableCell)e.Item.Controls[0];
      Control c = td.Controls[1]; // Kan bli tvungen att byta ut indexet i Controls[i]
      if(c is CheckBox)
      {
         CheckBox cb = (CheckBox)c;
         cb.TabIndex = (short)e.Item.ItemIndex;
      }
   }
}
public void Fread_oncheckedchanged(object sender, EventArgs e)
{
   CheckBox cb = (CheckBox)sender;
   Response.Write(cb.TabIndex);
}
135 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)