从gridview提取数据到文本框
本文关键字:文本 数据 gridview 提取 | 更新日期: 2023-09-27 18:03:12
我有一个gridview,我试图提取数据填充3个文本框…我试过很多方法,但就是找不到正确的方法。我已经建立了gridview手动,因此它没有"editTemplate"…有人能告诉我怎么做吗?这是我的gridview的样子:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
EmptyDataText="No parts has been added to the model, please add a part."
BorderColor="Black" BorderStyle="Solid" BorderWidth="2px"
CellPadding="3" onrowcommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:LinkButton ID="EditButton" runat="server" CssClass="EditButton" CommandName="Edit" Text="Edit" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:LinkButton ID="DeleteButton" runat="server" CssClass="DeleteButton" CommandName="Delete" Text="Delete" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#FFFFCC" BorderColor="Black" BorderStyle="Solid"
BorderWidth="2px" />
</asp:GridView>
然后这就是我如何添加必要的列到gridview:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
dt = new DataTable();
MakeDataTable();
EmptyDataString();
}
else
{
dt = (DataTable)ViewState["DataTable"];
}
ViewState["DataTable"] = dt;
}
#region GridView
private void EmptyDataString()
{
TemplateBuilder tmpEmptyDataTemplate = new TemplateBuilder();
tmpEmptyDataTemplate.AppendLiteralString("No parts has been added to the model, please add a part.");
GridView1.EmptyDataTemplate = tmpEmptyDataTemplate;
GridView1.DataBind();
}
private void MakeDataTable()
{
dt.Columns.Add("Item");
dt.Columns.Add("Quantity");
dt.Columns.Add("Price P/Quantity");
}
private void AddToDataTable()
{
DataRow dr = dt.NewRow();
dr["Item"] = txtPart.Text;
dr["Quantity"] = numQuantity.Text;
dr["Price P/Quantity"] = txtPricePQ.Text;
dt.Rows.Add(dr);
}
private void BindGrid()
{
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void btnAddPart_Click(object sender, EventArgs e)
{
AddToDataTable();
BindGrid();
ClearNewParts();
}
#endregion
这些是我尝试过的一些方法:(当我转移到下一种方法时,所有的方法都被注释掉了.....
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
// int index = Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "Edit")
{
if (GridView1.SelectedRow != null)
{
//dataTable.Rows[GridView1.SelectedRow].BeginEdit();
//dataTable.Rows[GridView1.SelectedRow]["yourFieldName"] = newValue;
//dataTable.Rows[GridView1.SelectedRow].EndEdit();
//gridView.DataSource = dataTable;
}
// GridViewRow row = GridView1.Rows[e.RowIndex];
// Department = ((GridViewRow(((LinkButton)e.CommandSource).NamingContainer)).Cells[2].Text;
// txtPart.Text = GridView1.SelectedRow.Cells[1].Text;
// txtPart.Text = GridView1.Rows[index].Cells[2].Text;
// Response.Write(gv.Rows[index].Cells[0].Text); //consider you use bound field and the column you want to show its value is the first column.
}
我知道我在如何试图实现从gridview中提取数据以填充文本框上做错了什么,但不确定如何....(我还是一个初级程序员,基本上是第一次做我在这里试图实现的东西)....
使用以下代码>>
如果Windows App>>
for(int i=0;i<gv.Rows.Count;i++)
{
id=gv.selectedRows[i].cells[0][0].value.toString();
name=gv.selectedRows[i].cells[0][0].value.toString();
}
否则你可以从gridview中得到选定的行。
如果不需要选择,则
for(int i=0;i<gv.Rows.Count;i++)
{
id=gv.Rows[i].cells[0][0].value.toString();
name=gv.Rows[i].cells[0][0].value.toString();
}
第三种选择>>
if (e.CommandName == "Edit")
{
if (GridView1.SelectedRow != null)
{
//dataTable.Rows[GridView1.SelectedRow].BeginEdit();
//dataTable.Rows[GridView1.SelectedRow]["yourFieldName"] = newValue;
//dataTable.Rows[GridView1.SelectedRow].EndEdit();
//gridView.DataSource = dataTable;
}
// GridViewRow row = GridView1.Rows[e.RowIndex];
for(int i=0;i<GridView1.Rows.Count;i++)
{
Department = ((GridViewRow(((LinkButton)e.CommandSource).NamingContainer)).Cells[2].Text;
txtPart.Text = GridView1.SelectedRow[i][0].Cells[1].Text;
txtPart.Text = GridView1.Rows[i][0].Cells[2].Text;
Response.Write(gv.Rows[i][0].Cells[0].Text); //consider you use bound field and the column you want to show its value is the first column.
}
}
还可以将这些变量设置为文本框。
或者直接设置
尝试。