2017-05-25 94 views
0

我已經創建了帶有文本框和按鈕的gridview。在文本框中,我可以輸入要添加到網格中的列數。列標題應該改變像t1,t2 ...這是我的代碼。asp.net中gridview的列標題

protected void Page_Load(object sender, EventArgs e) 
{ 
if (!IsPostBack) 
    { 
     griddisplay(); 
    } 
} 
public void griddisplay() 
{ 
    con.Open(); 
    SqlCommand cmd = new SqlCommand("SELECT * FROM testclientinfo", con); 
    SqlDataReader dr = cmd.ExecuteReader(); 
    GridView1.DataSource = dr; 
    GridView1.DataBind(); 
    con.Close(); 
} 

protected void btnadd_Click(object sender, EventArgs e) 
{ 
    int num; 
    num = Convert.ToInt32(txtnumber.Text.Trim()); 
    for (int i = 1; i <= num; i++) 
    { 


     string name = "t"; 
     name = string.Concat(name, i); 
     BoundField test = new BoundField(); 
     test.HeaderText = name; 
     GridView1.Columns.Add(test); 

    } 
} 

問題是1.columns添加了對添加按鈕第二次點擊,當我在文本框中輸入數字,然後點擊添加按鈕列不添加。 2.例如,如果我在文本框t1中輸入2 & t2列被添加,再次點擊添加列標題時應該是t3 & t4,但是再次添加t1和t2。請幫忙。

+0

回答第一個問題是下put'griddisplay'在Page_Load中調用'如果(!的IsPostBack)'。 –

+0

@ChetanRanpariya不工作 – nirmala

+0

你還需要做兩次點擊才能添加列?你能更新你改變的代碼嗎? –

回答

0

不確定問題1,但問題2可以解決如下。

在aspx中添加隱藏字段,其ID爲columnAdded,並將其值設置爲「0」。

<input type="hidden" runat="server" value="0" id="columnAdded"/> 

在代碼

protected void btnadd_Click(object sender, EventArgs e) 
{ 
    int num; 
    num = Convert.ToInt32(txtnumber.Text.Trim()); 
    int addedColumn = Convert.ToInt32(columnAdded.Value); 
    for (int i = addedColumn + 1; i <= addedColumn + num; i++) 
    { 
     string name = "t"; 
     name = string.Concat(name, i); 
     BoundField test = new BoundField(); 
     test.HeaderText = name; 
     GridView1.Columns.Add(test); 

    } 
    columnAdded.Value = addedColumn + num; 
} 
+0

非常感謝你解決了我的問題 – nirmala

+0

不客氣 – Imad