在 Asp.Net c# 中更新 gridview

Posted

技术标签:

【中文标题】在 Asp.Net c# 中更新 gridview【英文标题】:Update gridview in Asp.Net c# 【发布时间】:2018-01-16 23:57:16 【问题描述】:

我正在使用 c#,并且在 gridview 中有两个按钮可以接受和拒绝。

如果管理员点击接受按钮,它将显示确认消息。

如果管理员单击“确定”,它将更改数据库中的请求状态,我想在单击“确定”后刷新网格视图以禁用接受的学生。

这是我的代码,但它不起作用

此确认消息使用 java 脚本显示“Ok”或“cancel”

function ConfirmAccept() 
        var confirm_value = document.createElement("INPUT");
        confirm_value.type = "hidden";
        confirm_value.name = "confirm_value";

   if (confirm("Are you sure Accept?")) 
       confirm_value.value = "OK";
       //history.go(0);
       //window.location.href = window.location.href;
       //location.reload(true);
         else 
            confirm_value.value = "Cancle";
   

   document.forms[0].appendChild(confirm_value);

    

这个按钮在gridview里面

<asp:TemplateField HeaderText="Request Status">
            <ItemTemplate>
                <asp:Button ID="Accept" runat="server" CommandName="Accept" Text="Accept" OnClick="RequestStatus" OnClientClick="ConfirmAccept()"  />
                <asp:Button ID="Reject" runat="server" CommandName="Reject" Text="Reject" OnClick="RequestStatus" OnClientClick="ConfirmReject()" />

            </ItemTemplate>
        </asp:TemplateField>

以及c#中的这个请求状态

protected void RequestStatus(object sender, System.EventArgs e)


    //Get the button that raised the event
    Button btn = (Button)sender;

    //Get the row that contains this button
    GridViewRow row = (GridViewRow)btn.NamingContainer;

    //Get the national Id of the row 
    String nationalID = row.Cells[4].Text;

    //get the id of the button user clicked
    string buttonId = btn.ID;

    string confirmValue = Request.Form["confirm_value"];

    String RowRequestStatus;

    if (buttonId == "Accept"  )
    

        if (confirmValue == "OK")
        
           // TextBox1.Text = "accept";
            // this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You sure accept " + row.Cells[4].Text + "!')", true);
            RowRequestStatus = "Accept";

            getdataobj.changeRequestStatue(RowRequestStatus, nationalID);
            btn.PostBackUrl = "~/Admin.aspx";
        
    
    else if (buttonId == "Reject")
    
        if (confirmValue == "OK")
        
            // this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You sure Reject " + row.Cells[4].Text + " !')", true);

            RowRequestStatus = "Reject";

            getdataobj.changeRequestStatue(RowRequestStatus, nationalID);

        
    




【问题讨论】:

哪个部分不工作以及您期望什么?进一步解释以获得一些见解。 当我点击 OK 消息时,该行应该从网格视图中删除,但它不起作用,除非我刷新页面 【参考方案1】:

您可以在加载网格视图之前检查数据库中的请求状态。例如:

 var details = (from st in db.Students
                               join reg in db.Registrations on st.StudentId equals reg.StudentId
                               where (reg.Status== 0)
                               select new
                               
                                   Name=/.../
                                   Address = /.../ 

然后将其加载到您的网格视图中。

【讨论】:

以上是关于在 Asp.Net c# 中更新 gridview的主要内容,如果未能解决你的问题,请参考以下文章

绑定 C#、ASP.net 后在 gridview 中添加新行

如何在 c# ASP.NET 中使用 GridView_RowCommand 事件从 GridView 获取图像

asp.net c#在gridview添加dropdownlist

asp.net c# gridview的居中问题

如何使用 C# asp.net 在 GridView 中添加文件上传日期和/或时间?

c# asp.net GridView中如何删除一条记录后刷新页面