2009-10-16 54 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

相關問題