C# 是否在gridview中获取特定数据行?
如何在asp.net中获取GridView的特定数据行 我在这里有这样的图像: 例如: 我想得到studentID=2011017997及其CourseNo='CmpE 515'的具体数据行 如何获取他们的特定数据?GridViewRow是否有一个内置函数来获取数据行 以下是aspx代码:C# 是否在gridview中获取特定数据行?,c#,asp.net,sql-server,gridview,code-behind,C#,Asp.net,Sql Server,Gridview,Code Behind,如何在asp.net中获取GridView的特定数据行 我在这里有这样的图像: 例如: 我想得到studentID=2011017997及其CourseNo='CmpE 515'的具体数据行 如何获取他们的特定数据?GridViewRow是否有一个内置函数来获取数据行 以下是aspx代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ValidateSubjectTeacher.aspx.cs" Inherits="
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ValidateSubjectTeacher.aspx.cs" Inherits="SoftwareAnalysisAndDesign.SAD.ValidateSubjectTeacher" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Student Assessment Form</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="stylesheet" href="Bootstrap/css/bootstrap-theme.css" />
<link rel="stylesheet" href="Bootstrap/css/bootstrap.min.css"/>
<link rel="stylesheet" type="text/css" href="Stylesheets/ValidateSubjectTeacherStyle.css"/>
<!--Side bar link-->
<link rel="stylesheet" href="SidebarBootstrap/css/bootstrap.min.css" />
<link rel="stylesheet" href="SidebarBootstrap/css/simple-sidebar.css" />
</head>
<body>
<form id="form1" runat="server">
<div class="container" style="text-align: center; margin: 0 auto;">
<br />
<h1>Validation of Subjects</h1>
<br />
<asp:GridView runat="server" CssClass="table table-hover table-bordered" ID="ValidateSubject" Style="text-align: center"></asp:GridView>
</div>
<div style="float: right; padding-right: 75px;">
<button type="button" runat="server" class="btn btn-primary" onserverclick="ValidateSubject_Click">Validate</button>
</div>
</form>
<script src="jquery/jquery.min.js"></script>
<script src="Bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
如何在gridview中获取studentID和courseNo的值?我想获得Student ID和CourseNo的数据行,并将其放在我的一个参数中:
cmd.Parameters.AddWithValue("@studentID", );
cmd.Parameters.AddWithValue("@Coursenumber", );
这个问题只是这个链接的后续问题
现在,我想在选中复选框事件并触发按钮ValidateSubject\u Click事件时更新我的查询。由于您可以使用gvRow访问GridViewRow,因此您可以从第1行和第2行单元格访问StudentID和Coursenumber,如下所示
var studentID = grvRow.Cells[0].Text;
var courseNumber = grvRow.Cells[1].Text;
解决问题的另一个例子是:
<asp:GridView ID="gvStudent" runat="server" AutoGenerateColumns="False" DataSourceID="StudentDataSource">
<Columns>
<asp:BoundField DataField="Serial" HeaderText="Serial" SortExpression="Serial" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
<asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" />
<asp:TemplateField HeaderText="Verified" SortExpression="Verified">
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Verified") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Verified") %>'
AutoPostBack="true" OnCheckedChanged="chkVerified_CheckedChanged" />
<asp:HiddenField ID="hddSerial" runat="server" Value='<%# Bind("Serial") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Label ID="lblResult" runat="server" Text="You have validate: N/a"></asp:Label>
<asp:ObjectDataSource ID="StudentDataSource" runat="server" SelectMethod="Get" TypeName="WebFormApp._32846281.Models.Student"></asp:ObjectDataSource>
这就解决了这个问题:如果您对列重新排序,首先使用该方法,您必须更改后面的代码
在我的解决方案中,如果对列重新排序,后面的代码是相同的。为什么需要
GridViewRow
?如果需要查找其他记录/行,通常使用数据源(即数据库)。如果启用分页且该行位于当前不存在的页中,则该方法至少会失败。您的参数有问题。不要用撇号把它们括起来。而是这样写:updateassessmentformset Status=@Validated其中StudentID=@StudentID和CourseNo=@Coursenumber
我会注意到这一点。是的,这在我的程序中是一个很大的风险,当涉及到分页时,问题是我已经在页面加载中绑定了我的数据源。当gridview已经绑定时,是否可以检索数据?能否显示相关的asp代码?您使用templatefields还是boundfields?您想从当前行还是其他行获取studentid和coursenumber?我已经编辑了我的问题,先生,关于sqlcommand,这是使用参数进行查询的正确方法吗?我的GridView是自动生成的列,因此我获取所有数据表并绑定它们,我只需要当前行的studentid和coursenumber。我得到一个错误((附加信息:无法将类型为“System.Web.UI.HtmlControl.HtmlButton”的对象强制转换为类型为“System.Web.UI.WebControl.CheckBox”))谢谢,我确实获得了数据。
<asp:GridView ID="gvStudent" runat="server" AutoGenerateColumns="False" DataSourceID="StudentDataSource">
<Columns>
<asp:BoundField DataField="Serial" HeaderText="Serial" SortExpression="Serial" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
<asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" />
<asp:TemplateField HeaderText="Verified" SortExpression="Verified">
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Verified") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Verified") %>'
AutoPostBack="true" OnCheckedChanged="chkVerified_CheckedChanged" />
<asp:HiddenField ID="hddSerial" runat="server" Value='<%# Bind("Serial") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Label ID="lblResult" runat="server" Text="You have validate: N/a"></asp:Label>
<asp:ObjectDataSource ID="StudentDataSource" runat="server" SelectMethod="Get" TypeName="WebFormApp._32846281.Models.Student"></asp:ObjectDataSource>
protected void chkVerified_CheckedChanged(object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
GridViewRow grvRow = (GridViewRow)chk.NamingContainer;
HiddenField hf = grvRow.FindControl("hddSerial") as HiddenField;
lblResult.Text = string.Format("You have validate:{0}", hf.Value);
}