C# 当我按下按钮时,如何理解哪些列的值?
我尝试在aspx中编写数据网格。在我的数据库中,有一列名称为“PROJECT\u name”。我希望这些列在我的数据网格中,然后我添加第二列(editbox)来为每个项目添加值。这都在网格视图中,我在表单中添加了按钮。当我按下按钮时,我如何理解哪些列值属于哪个项目 我是说,比如说C# 当我按下按钮时,如何理解哪些列的值?,c#,asp.net,gridview,C#,Asp.net,Gridview,我尝试在aspx中编写数据网格。在我的数据库中,有一列名称为“PROJECT\u name”。我希望这些列在我的数据网格中,然后我添加第二列(editbox)来为每个项目添加值。这都在网格视图中,我在表单中添加了按钮。当我按下按钮时,我如何理解哪些列值属于哪个项目 我是说,比如说 行值:项目2列值:50 行值:B项目2列值:60 行值:C项目2列值:70 我想知道我什么时候按下按钮1。项目价值50ı如何理解这一点 这是我的aspx代码: <%@ Page Language="C#
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.style1
{
width: 78px;
}
.style2
{
width: 426px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div style="height: 561px">
<table style="width: 100%; height: 556px;">
<tr>
<td>
</td>
<td>
<table style="width:100%;">
<tr>
<td class="style1">
Ay</td>
<td>
<asp:TextBox ID="ay" runat="server"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td class="style1">
Yıl</td>
<td>
<asp:TextBox ID="yil" runat="server"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td class="style1">
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:GridView ID="portföy" runat="server"
CellPadding="3" GridLines="Horizontal"
AutoGenerateColumns="False"
DataKeyNames="PRJ_PROJECT_NAME" BackColor="White" BorderColor="#E7E7FF"
BorderStyle="None" BorderWidth="1px" Font-Bold="False" Font-Names="Verdana"
Font-Overline="False" Font-Size="Smaller" Width="1000px"
>
<RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
<Columns>
<asp:TemplateField HeaderText="PRJ_PROJECT_NAME" HeaderStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label ID="lblProjeTT" runat="server" Text='<%# Bind("PRJ_PROJECT_NAME") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left"></HeaderStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="Miktar (a/g)" HeaderStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:TextBox runat="server" id="txtField1" Text='<%# Bind("TAMAMLANMA_YUZDESI") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="txtField1" Text='<%# Bind("TAMAMLANMA_YUZDESI") %>'/>
</EditItemTemplate>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="" ShowHeader="False" HeaderStyle-HorizontalAlign="Center">
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
<PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
<EditRowStyle BackColor="#FFFFA8" ForeColor="Black" />
<AlternatingRowStyle BackColor="#F7F7F7" />
</asp:GridView>
<table style="width:100%;">
<tr>
<td class="style2">
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td class="style2">
</td>
<td>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button"
Width="149px" />
</td>
<td>
</td>
</tr>
<tr>
<td class="style2">
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
谢谢。在按钮1\u单击内部,您需要循环浏览GridView中的所有行,并对每行执行FindControl以获取标签和文本框。从中可以确定文本框中的PRJ_项目名称和值 以下是一个例子: Default.aspx
<asp:GridView ID="gvData" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblLabel" runat="server" Text='<%# Bind("Number") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="txtData" runat="server" Text='<%# Bind("Value") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="Submit" />
Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Create some fake data and bind it to the gridview
var data = new List<TheData>();
foreach(var num in Enumerable.Range(1, 4))
{
var newData = new TheData();
newData.Number = num.ToString();
newData.Value = num;
data.Add(newData);
}
gvData.DataSource = data;
gvData.DataBind();
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
for (var index = 0; index < gvData.Rows.Count; ++index)
{
var row = gvData.Rows[index];
var lblLabel = row.FindControl("lblLabel") as Label;
var txtData = row.FindControl("txtData") as TextBox;
//Here is where the values are grabbed, at this point you can do what you need to.
var number = lblLabel.Text;
var value = txtData.Text;
}
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
//创建一些假数据并将其绑定到gridview
var data=新列表();
foreach(可枚举范围(1,4)中的var num)
{
var newData=newthedata();
newData.Number=num.ToString();
newData.Value=num;
data.Add(newData);
}
gvData.DataSource=数据;
gvData.DataBind();
}
}
受保护的void btnsupmit\u单击(对象发送者,事件参数e)
{
对于(变量索引=0;索引
我以前使用过的一个解决方案利用了按钮的CommandArgument属性。您可以设置CommandArgument='',每个按钮将获得其所在行中的列的值。然后,在单击事件中,您可以将对象发送者解析回一个按钮并访问CommandArgument值。它是一个列,而不是一个列,请注意
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Create some fake data and bind it to the gridview
var data = new List<TheData>();
foreach(var num in Enumerable.Range(1, 4))
{
var newData = new TheData();
newData.Number = num.ToString();
newData.Value = num;
data.Add(newData);
}
gvData.DataSource = data;
gvData.DataBind();
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
for (var index = 0; index < gvData.Rows.Count; ++index)
{
var row = gvData.Rows[index];
var lblLabel = row.FindControl("lblLabel") as Label;
var txtData = row.FindControl("txtData") as TextBox;
//Here is where the values are grabbed, at this point you can do what you need to.
var number = lblLabel.Text;
var value = txtData.Text;
}
}