2009-10-16 7 views
0

J'ai une table de données qui a déjà quelques valeurs, plus il obtient des valeurs d'une zone de texte ci-dessous.Je ne veux pas de zone de texte pour entrer une valeur nulle dans la donnée

Maintenant mon problème est quand je ne saisis pas une valeur dans la zone de texte, il entre toujours dans la table de données. Je ne veux pas qu'il fasse cela ..

Le code peut fonctionner sur n'importe quelle machine ... des suggestions ????

Merci

public partial class WebForm6 : System.Web.UI.Page 
{ 
    DataTable dt; 
    protected void Page_Load(object sender, EventArgs e) 
    { 


     // Initialize a DataTable 

     if (!Page.IsPostBack) 
     { 
      dt = new DataTable(); 
      // Initialize DataColumn 

      DataColumn myDataColumn = new DataColumn(); 



      //// initialize a new instance of DataColumn to add another column with different properties. 

      //myDataColumn = new DataColumn(); 

      myDataColumn.ColumnName = "firstName"; 
      // set DataType property of the column as String 

      myDataColumn.DataType = System.Type.GetType("System.String"); 

      // Add and Create a Second DataColumn 

      dt.Columns.Add(myDataColumn); 


      // create a new row using NewRow() function of DataTable. 

      // dataRow object will inherit the schema of myDataTable to create a new row 

      DataRow dataRow = dt.NewRow(); 

      dataRow["firstName"] = "John"; 

      // add new data row to the data table. 

      dt.Rows.Add(dataRow); 

      // similarly adds the second row to the DataTable 

      dataRow = dt.NewRow(); 

      dataRow["firstName"] = "Will"; 
      dt.Rows.Add(dataRow); 
      Session["data"] = dt; 

      GridView1.DataSource = dt; 
      GridView1.DataBind(); 

     } 
    } 

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 

    if (Session["Data"] == null) 
     { 
      dt.Columns.Add("firstName"); 
      BindtoGridViewFromTextBoxes(dt); 
      ClearControls(); 
     } 
    else 
    { 
     dt = (DataTable)Session["Data"]; 
     BindtoGridViewFromTextBoxes(dt); 
     ClearControls(); 
    } 
    } private void ClearControls() 
    { 
    txtName.Text = String.Empty; 

    } 

private void BindtoGridViewFromTextBoxes(DataTable dt) 
    { 
     DataRow dr; 
     dr = dt.NewRow(); 

     dr["firstName"] = txtName.Text.ToString(); 
     dt.Rows.Add(dr); 
     Session["Data"] = dt; 

     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 

et sur la page .aspx

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> 

<asp:TemplateField> 
    <EditItemTemplate> 
     <asp:CheckBox ID="CheckBox1" runat="server" /> 
    </EditItemTemplate> 
    <ItemTemplate> 
     <asp:CheckBox ID="CheckBox1" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="First Name"> 
    <EditItemTemplate> 
     <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("firstName") %>'></asp:TextBox> 
    </EditItemTemplate> 
    <ItemTemplate> 
     <asp:Label ID="Label1" runat="server" Text='<%# Bind("firstName") %>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

toute aide .... ??

+0

Je veux juste ajouter une pensée ... Qu'en est-validationg entrée utilisateur? Ou définir quelle est la signification de "vide" pour votre application. Juste une idée. – bastianneu

+0

pas les données de session toujours des données et j'ai une condition if qui vérifie ... même si elle est nulle elle ne fait pas ce qu'elle est supposée faire ... essayez-le si vous le pouvez ... et déboguez le bouton soumettre une partie .. vous comprendrez ce que je parle environ .. merci – user175084

Répondre

1

Changez votre méthode pour être ceci:

private void BindtoGridViewFromTextBoxes(DataTable dt) 
{ 
    if (!String.IsNullOrEmpty(txtname.Text)) 
    { 
     DataRow dr = dt.NewRow(); 
     dr["firstName"] = txtName.Text; 
     dt.Rows.Add(dr); 
     Session["Data"] = dt; 
    } 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
} 
+0

merci beaucoup ... – user175084

Questions connexes