2017-05-25 6 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.追加ボタンの2回目のクリックで追加されます。テキストボックスに数字を入力して追加ボタンをクリックすると、列は追加されません。 2.たとえば、テキストボックスt1に2を入力すると、& t2列が追加されます。また、追加列ヘッダーをクリックすると、t3 & t4になりますが、t1とt2が追加されます。助けてください。

+0

回答は 'もし(!IsPostBackプロパティ)の下をPage_Loadでの通話をput'griddisplay'することです'。 –

+0

@ChetanRanpariyaそれは動作しません – nirmala

+0

あなたはまだ列を追加するために2回クリックする必要がありますか?変更したコードを更新できますか? –

答えて

0

問題1についてはわかりませんが、問題2は次のように解決できます。

IDがcolumnAddedのaspxで非表示フィールドを追加し、その値を "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