从一个页面传递ASP.Net GridView控件到另一个页面 [英] Pass ASP.Net GridView from one page to another page
问题描述
我想通过在GridView控件值到另一个页面
我有PatientDetails.aspx第一页的GridView和一个按钮,如下
I want to pass all the gridview value into another page I have one gridview in PatientDetails.aspx page and one button as below
<asp:GridView ID="gvDoctorList" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
AllowPaging="True" AllowSorting="True" AutoGenerateEditButton="true" AutoGenerateSelectButton="true"
AutoGenerateDeleteButton="true" OnSelectedIndexChanged="gvDoctorList_SelectedIndexChanged" OnRowCommand="gvDoctorList_RowCommand">
<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>
<asp:Button ID="btnSelect" runat="server" Text="Select" CommandName = "Select" />
</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>
<asp:Button ID="btnformatric" runat="server" Text="formatric3d" OnClick="btnformatric_Click" OnCommand="btnformatric_Command" />
在PatientDetails.aspx的代码隐藏是如下
on codebehind of PatientDetails.aspx is as below
protected void btnformatric_Click(object sender, EventArgs e)
{
if (gvDoctorList.SelectedRow != null)
{
Server.Transfer("Patientstaticformatrix.aspx");
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Please select a row.')", true);
}
}
在第二页的名字Patientstaticformatrix.aspx现在的代码背后是如下
Now on the second page name Patientstaticformatrix.aspx the code behind is as below
protected void Page_Load(object sender, EventArgs e)
{
if (this.Page.PreviousPage != null)
{
GridView gvDoctorList = (GridView)this.Page.PreviousPage.FindControl("gvDoctorList");
GridViewRow selectedRow = gvDoctorList.SelectedRow;
Response.Write("PatientId: " + selectedRow.Cells[0].Text + "<br />");
Response.Write("firstname: " + selectedRow.Cells[1].Text + "<br />");
Response.Write("lastname: " + selectedRow.Cells[2].Text + "<br />");
}
}
我已经调试第二页中的代码...对于gvDoctorList .the值为null还有selectedRow是显示nullreference的错误。
I had debug the code in second page....the value for gvDoctorList is null as well as the selectedRow is showing error of nullreference.
您可以请让我在哪里,我错了?
Can you please let me where I am wrong?
推荐答案
正如我已经看见你前面的问题还,所以我建议你一件事,而不是保持你的GridView会话(这是昂贵的),可以使用 RowCommand
事件,后有按钮
在这里,我不认为你需要复选框或 chk_CheckedChanged
时,您可以通过 PatientID
到下一个页面那里你可以编写查询所选行的数据插入到新表。
As i have seen your previous question also, So i can suggest you one thing, rather than keeping your gridview in session(which is expensive) you can use RowCommand
event, and after having button
here i don't think you need checkbox or chk_CheckedChanged
event, you can pass the PatientID
to your next page there you can write query to insert selected row data to your new table.
<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>
<asp:Button ID="btnSelect" runat="server" Text="Select" CommandArgument='<%#
Eval("PatientId") %>' CommandName = "Select" />
</ItemTemplate>
</asp:TemplateField>
protected void gvDoctorList_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "select")
{
int pID = Convert.ToInt32(e.CommandArgument);
// either put ID in session and check
Session["PatientID"] = Convert.ToString(pID);
Server.Transfer("Patientstaticformatrix.aspx");
}
}
在Page_Load事件
On page_Load Event
protected void Page_Load(object sender, EventArgs e)
{
string pID = Convert.ToString(Session["PatientID"]);
if(!string.IsNullOrEmpty(pID))
{
int patientID = Convert.ToInt32(pID);
//Call Stored procedure which will insert this record with this ID
// to another table
}
}
这篇关于从一个页面传递ASP.Net GridView控件到另一个页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!