我希望在一页上有gridview,如下所示
<asp:GridView ID="gvDoctorList" runat="server"
AutoGenerateColumns="False"
DataSourceID="SqlDataSource1"
AllowPaging="True"
AllowSorting="True"
AutoGenerateEditButton="true"
AutoGenerateDeleteButton="true">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox runat="server"
ID="chk"
OnCheckedChanged="chk_CheckedChanged"
AutoPostBack="true"/>
<asp:Label runat="server" ID="lblPID" Visible="false" Text='<%# Eval("PatientId") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="PatientId"
HeaderText="PatientId"
SortExpression="PatientId" />
<asp:BoundField DataField="firstname"
HeaderText="firstname"
SortExpression="firstname" />
<asp:BoundField DataField="lastname"
HeaderText="lastname"
SortExpression="lastname" />
<asp:BoundField DataField="sex"
HeaderText="sex"
SortExpression="sex" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:MyDatabaseConnectionString %>"
SelectCommand="SELECT [PatientId],[firstname], [lastname], [sex] FROM [PatientDetails]">
</asp:SqlDataSource>
现在我将会话放在复选框更改事件上,如下所示
protected void chk_CheckedChanged(object sender, EventArgs e)
{
GridViewRow row = ((GridViewRow)((Control)sender).Parent.Parent);
string requestid = gvDoctorList.DataKeys[row.RowIndex].Value.ToString();
string cellvalue = row.Cells[1].Text;
Session["pId"] = cellvalue;
}
在另一个页面上,我想获取 session 的值,所以我在另一个页面上做了如下操作
protected void Page_Load(object sender, EventArgs e)
{
if (Session["pId"] != null)
{
lblsession.Text = Session["pId"].ToString();
}
else
{
}
}
但问题是,当我调试复选框更改事件的代码时,特别是在会话行上,它向我显示对象引用未设置为对象实例的错误。
我不明白有什么问题?
我想要做的是从用户已选中复选框的gridview中获取患者ID的值....将选定的值发送到另一个页面并希望将患者ID插入到sql表中。
请提供任何带有编码或其他好主意的示例。