将 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 表单数据发布到另一个页面

将 ASP.NET Core Razor 页面中的默认页面更改为登录页面

ASP.NET MVC:部分知道它是否从另一个页面带来请求?

jquery 类更改为 div 不适用于 asp,net

将数据传输到另一个 ASP.net 页面

如何将消息插入取决于会话值的视图。 ASP.NET MVC。最佳实践