2009-10-16 52 views
0

我有一个数据表已经有一些值,再加上它从下面的文本框中获取值。不想要文本框在数据表中输入空值

现在我的问题是,当我没有在文本框中输入一个值,它仍然进入数据表。 我不希望它这样做..

该代码可以在任何机器上运行...任何建议?

感谢

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(); 
    } 

和.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> 

任何帮助....?

+0

只想补充一个想法...关于validationg用户输入的是什么?或者为您的应用定义“空白”的含义。只是一个想法。 – bastianneu 2009-10-16 14:34:47

+0

没有会话数据总是一些数据,我有一个if条件检查...即使它是空它不会做它应该做的...尝试它,如果你可以...并调试按钮提交部分..你会明白什么即时通讯abt .. 谢谢 – user175084 2009-10-16 14:43:05

回答

1

改变你的方法是这样的:

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

谢谢很多人... – user175084 2009-10-16 19:20:08

相关问题