2010-02-17 6 views
0

dans ma demande je suis en train d'obtenir la case à cocher qui est dans le gridview i utilise le contrôle foreach mais il est shoing null ceci est mon code./ ..trouver le contrôle en mode grille?

source de

« > 'visible = "false"> '> ' TextMode = "multiLine"> '> ' TextMode = "multiLine">
'> ' />

getPlaylist public void() // i écrire le contrôle de la constatation d'une méthode {MyplalistBL clsMyplalstBl = new MyplalistBL(); clsMyplalstBl.Userid = Session ["ID_utilisateur"]. ToString(); DataSet ds = clsMyplalstBl.getPlaylistBl(); si (ds.Tables [0] .Rows.Count> 0) {

 grdplaylist .DataSource =ds.Tables [0]; 
     grdplaylist.DataBind(); 

     foreach (GridViewRow gr in grdplaylist.Rows) 
     { 
      CheckBox ch = (CheckBox)gr.FindControl("chksett"); 
      string s = ds.Tables[0].Rows[0]["settings"].ToString(); 

      if (s == "P") 
      { 
       ch.Checked = true; 
      } 
      else if (s == "PV") 
      { 
       ch.Checked = false; 
      } 


     } 


    } 
    else 
    { 
     grdplaylist.DataSource = null; 
     grdplaylist.DataBind(); 

    } 
} 
+0

Je vais vous expliquer clairement dans mon gridview une case à cocher est là. la case à cocher doit être cochée quand c'est "P" et non cochée quand c'est "PV" cela vient de la base de données. comment puis-je.comment puis-je déclarer la case à cocher dans la grille je déclare comme ça est-ce correct –

Répondre

2

Eh bien, ce qui est intéressant ... Il semble que vous voulez charger votre statut case à cocher base de données, afin , ce que vous devez faire est, changer votre code à l'événement lié aux données de vue du réseau et il commencera à travailler

+0

oui exactement Mr.Lakhalani Prashant. –

+0

vous devrez vérifier rowType dans l'événement databound sinon il peut vomir une exception si vous essayez de trouver une case à cocher dans l'en-tête ou pied de page (si la grille a un) –

0

si vous voulez vérifier la case à cocher en fonction de la valeur dans le tableau, vous pouvez utiliser l'événement Row_DataBound

protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow & (e.Row.RowState == DataControlRowState.Normal | e.Row.RowState == DataControlRowState.Alternate)) { 
        CheckBox cb = (CheckBox)e.Row.FindControl("CheckBoc1"); 
        string s= ((DataRowView)e.Row.DataItem).Row("settings"); 
        if (s== "P") { 
            cb.Checked = true; 
        } 
        else if (s== "PV") { 
            cb.Checked = false; 
        } 
    } 
} 
0

Cela semble correct, vous devriez avoir quelque chose comme:

foreach (GridViewRow row in GridView1.Rows) 
{ 
    string dropDownListText = ((DropDownList)row.FindControl("DropDownList1")).SelectedItem.Value; 
} 

pour le balisage:

<ItemTemplate> 
<asp:DropDownList ID="DropDownList1" DataTextField="Name" DataValueField = "Name" DataSource= '<%# BindDropDownList() %>' runat="server"> 
</asp:DropDownList> 
</ItemTemplate> 

donc je voudrais essayer de vous assurer que votre désignation est correcte. Assurez-vous que vous l'avez nommé "Chksett" en effet.

Si cela ne fonctionne pas, déplacez-le vers un événement RowBound ou ItemBound.

+0

ok je vais essayer et vous informer –

+0

Voici un échantillon décent avec une case à cocher qui est probablement similaire à votre situation: http://highoncoding.com/Articles/81_Selecting_Checkboxes_inside_GridView_Control.aspx –

0

vous pouvez aussi le faire:

foreach (GridViewRow gr in grdplaylist.Rows) 
     { 
      CheckBox ch = (CheckBox)gr[gr.RowIndex].FindControl("chksett"); 
      string s = ds.Tables[0].Rows[0]["settings"].ToString(); 

      if (s == "P") 
      { 
       ch.Checked = true; 
      } 
      else if (s == "PV") 
      { 
       ch.Checked = false; 
      } 
     } 
Questions connexes