将 asp.net 表单视图更改为从另一个页面插入模式
Posted
技术标签:
【中文标题】将 asp.net 表单视图更改为从另一个页面插入模式【英文标题】:Change asp.net form view to insert mode from another page 【发布时间】:2015-01-28 06:21:40 【问题描述】:我有 2 个用 ASP.NET Web Froms 编写的 ASP.NET 页面。 在第 1 页上,我有 Main Grid View Control 。 在第 2 页上,我在 From View 控件中列出了详细信息。
我在第 1 页上有一个按钮。单击按钮时。我想改变 从查看模式到插入。有什么办法可以吗?
我的代码如下:
第 1 页: ASPX 页面:按钮和网格视图
<asp:Panel ID="pnl" runat="server">
<table>
<tr>
<td>
<asp:Button ID="btnNewIssue" Text="Create New Issue" runat="server" OnClick="btnNewIssue_Click" />
</td>
</tr>
</table>
</asp:Panel>
<asp:Panel>
<asp:GridView ID="gvTasks" runat ="server">
Grid View Code--------------------------------
</asp:GridView>
</asp:Panel>
第 2 页:ASPX.CS 页面:
protected void btnNewIssue_Click(object sender, EventArgs e)
int index = 0;
What should go here ????
protected void gvTasks_RowCommand(object sender, GridViewCommandEventArgs e)
if (e.CommandName == "Details")
int index = Convert.ToInt32(e.CommandArgument);
StringBuilder sb = new StringBuilder();
sb.Append("~/Details.aspx?TaskID=");
sb.Append(index);
Response.Redirect(sb.ToString());
//Response.Redirect("~/Details.aspx?TaskID=1234");
第 2 页:aspx 表单视图
<asp:FormView ID="FormView1" runat="server">
<ItemTemplate>
---Item Template Code....
</ItemTemplate>
<EditItemTemplate>
--- Edit Item Template Code....
</EditItemTemplate>
<InsertItemTemplate>
--- Insert Item Template Code....
</InsertItemTemplate>
</asp:FormView>
第 2 页:aspx.cs
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
FillFormView();
private void FillFormView()
int taskid = int.Parse(Request.QueryString["TaskID"]);
----- Fetch dlist from Service based on taskid-----
FormView1.DataSource = dlist;
FormView1.DataBind();
protected void FormView1_ModeChanging(Object sender, FormViewModeEventArgs e)
if (e.NewMode == FormViewMode.Edit)
Label lblTaskId = ((Label)FormView1.FindControl("lblTaskID"));
Label lblTaskTitle = ((Label)FormView1.FindControl("lblTaskTitle"));
FormView1.ChangeMode(e.NewMode);
FillFormView();
else
FormView1.ChangeMode(e.NewMode);
FillFormView();
【问题讨论】:
【参考方案1】:protected void btnNewIssue_Click(object sender, EventArgs e)
Response.Redirect("~/Details.aspx");
或者您可以使用锚标记代替按钮。
<a href="Details.aspx">Create New Issue</a>
在您的 FillForView 或您也可以使用#Cruiser-KID Answer
private void FillFormView()
if (string.IsNullOrEmpty(Request.QueryString["TaskID"]))
FormView1.ChangeMode(FormViewMode.Insert);
else
int taskid = int.Parse(Request.QueryString["TaskID"]);
FormView1.ChangeMode(FormViewMode.Edit);
----- Fetch dlist from Service based on taskid-----
FormView1.DataSource = dlist;
FormView1.DataBind();
【讨论】:
【参考方案2】:更改您的 FillFormView
函数
private void FillFormView()
var taskId = Request.QueryString["TaskID"];
if (taskId == null)
FormView1.ChangeMode(FormViewMode.Insert);
return;
FormView1.ChangeMode(FormViewMode.Edit);
/// dlist from Service based on taskid-----
FormView1.DataSource = dlist;
FormView1.DataBind();
FormView1_ModeChanging
函数没有 ned。
还有一件事,使用 string.Format 而不是 StringBuilder 类
protected void gvTasks_RowCommand(object sender, GridViewCommandEventArgs e)
if (e.CommandName == "Details")
int index = Convert.ToInt32(e.CommandArgument);
Response.Redirect(string.Format("~/Details.aspx?TaskID=0", index));
//Response.Redirect("~/Details.aspx?TaskID=1234");
【讨论】:
以上是关于将 asp.net 表单视图更改为从另一个页面插入模式的主要内容,如果未能解决你的问题,请参考以下文章
将 ASP.NET Core Razor 页面中的默认页面更改为登录页面