11
A
回答
21
你可以試試下面的代碼
protected void Button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
if (dt.Columns.Count == 0)
{
dt.Columns.Add("PayScale", typeof(string));
dt.Columns.Add("IncrementAmt", typeof(string));
dt.Columns.Add("Period", typeof(string));
}
DataRow NewRow = dt.NewRow();
NewRow[0] = TextBox1.Text;
NewRow[1] = TextBox2.Text;
dt.Rows.Add(NewRow);
GridView1.DataSource = dt;
GridViewl.DataBind();
}
這裏PayScale的,incrementamt和週期的數據庫字段名。
1
嘗試使用克隆技術。
{
DataGridViewRow row = (DataGridViewRow)yourdatagrid.Rows[0].Clone();
// then for each of the values use a loop like below.
int cc = yourdatagrid.Columns.Count;
for (int i2 = 0; i < cc; i2++)
{
row.Cells[i].Value = yourdatagrid.Rows[0].Cells[i].Value;
}
yourdatagrid.Rows.Add(row);
i++;
}
}
這應該有效。我不確定綁定是如何工作的。希望它不會阻止這個工作。
6
在這裏,我寫下一個樣本例如,你可以直接檢查目的運行這個例子:
aspx頁面:
<asp:GridView ID="grd" runat="server" DataKeyNames="PayScale" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderStyle-HorizontalAlign="Left" HeaderText="Pay Scale">
<ItemTemplate>
<asp:TextBox ID="txtPayScale" runat="server" Text='<%# Eval("PayScale") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderStyle-HorizontalAlign="Left" HeaderText="Increment Amount">
<ItemTemplate>
<asp:TextBox ID="txtIncrementAmount" runat="server" Text='<%# Eval("IncrementAmount") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderStyle-HorizontalAlign="Left" HeaderText="Period">
<ItemTemplate>
<asp:TextBox ID="txtPeriod" runat="server" Text='<%# Eval("Period") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnAddRow" runat="server" OnClick="btnAddRow_Click" Text="Add Row" />
C#代碼:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
grd.DataSource = GetTableWithInitialData(); // get first initial data
grd.DataBind();
}
}
public DataTable GetTableWithInitialData() // this might be your sp for select
{
DataTable table = new DataTable();
table.Columns.Add("PayScale", typeof(string));
table.Columns.Add("IncrementAmount", typeof(string));
table.Columns.Add("Period", typeof(string));
table.Rows.Add(1, "David", "1");
table.Rows.Add(2, "Sam", "2");
table.Rows.Add(3, "Christoff", "1.5");
return table;
}
protected void btnAddRow_Click(object sender, EventArgs e)
{
DataTable dt = GetTableWithNoData(); // get select column header only records not required
DataRow dr;
foreach (GridViewRow gvr in grd.Rows)
{
dr = dt.NewRow();
TextBox txtPayScale = gvr.FindControl("txtPayScale") as TextBox;
TextBox txtIncrementAmount = gvr.FindControl("txtIncrementAmount") as TextBox;
TextBox txtPeriod = gvr.FindControl("txtPeriod") as TextBox;
dr[0] = txtPayScale.Text;
dr[1] = txtIncrementAmount.Text;
dr[2] = txtPeriod.Text;
dt.Rows.Add(dr); // add grid values in to row and add row to the blank table
}
dr = dt.NewRow(); // add last empty row
dt.Rows.Add(dr);
grd.DataSource = dt; // bind new datatable to grid
grd.DataBind();
}
public DataTable GetTableWithNoData() // returns only structure if the select columns
{
DataTable table = new DataTable();
table.Columns.Add("PayScale", typeof(string));
table.Columns.Add("IncrementAmount", typeof(string));
table.Columns.Add("Period", typeof(string));
return table;
}
我希望這可以幫助你。
請標記此答案有用,如果這解決了您的問題。
2
protected void TableGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex == -1 && e.Row.RowType == DataControlRowType.Header)
{
GridViewRow gvRow = new GridViewRow(0, 0, DataControlRowType.DataRow,DataControlRowState.Insert);
for (int i = 0; i < e.Row.Cells.Count; i++)
{
TableCell tCell = new TableCell();
tCell.Text = " ";
gvRow.Cells.Add(tCell);
Table tbl = e.Row.Parent as Table;
tbl.Rows.Add(gvRow);
}
}
}
+4
請給你的答案解釋,而不是幫助用戶學習只是一個代碼塊。有關更多信息,請參見[如何回答](http://stackoverflow.com/help/how-to-answer)。感謝您的加入! –
0
如果您正在使用的數據集在網格綁定,你可以在你的SQL數據適配器填充後添加一行:
adapter.Fill(DS); ds.Tables(0).Rows.Add();
相關問題
- 1. 添加新控件後添加新行
- 2. 添加使用JavaScriptSerializer與列表asp.net C#結合JSON
- 3. 向DataGridView添加新行C#
- 4. C#Streamreader添加新行
- 5. C# - 向DataGridView添加新行
- 6. Asp.Net結合C#和Angular
- 7. 添加項目後組合框不刷新C#WPF
- 8. C#,添加數據後刷新組合框
- 9. 添加新行後重新排序slickgrid?
- 10. 添加新行後MongoDB React.js更新表
- 11. 結合MySQLi行並添加計數器?
- 12. 添加新行的每一行後
- 13. 新行和空格添加在asp.net
- 14. 添加新行到ASP.NET GridView的
- 15. 動態添加行到GridView在ASP.NET(C#)
- 16. ASP.NET c#添加行到數據集
- 17. C#ASPX ASP.NET - 添加和刪除錶行
- 18. 添加新線後面的C#
- 19. 向LightSwitch組合框添加新行
- 20. 在集合末尾添加新行
- 21. Asp.Net GridView添加行
- 22. 添加新行到結束的uitableview
- 23. 添加通過結合
- 24. 添加類添加新行
- 25. ASP.NET - 添加新行(由定時器觸發)後,刷新gridview(DataTable源)
- 26. 添加新行後,Dojo拖放生氣
- 27. 添加新行,到數據網格後
- 28. XElement.SetElementValue在值前後添加新行
- 29. 關閉XML標記後添加新行
- 30. asp.net添加新字體
DataGridViewRow是從winforms如果我正確,這個問題怎麼是關於在asp.net webforms的gridview .. – Peter