【问题标题】:try catch does not work in gridview in ASP.net C#try catch 在 ASP.net C# 的 gridview 中不起作用
【发布时间】:2016-08-05 20:29:47
【问题描述】:

我正在尝试在 C# 的 asp.net 中为 gridview 定义 try catch,我使用了几种方法,例如在标签上显示或 java 脚本,但它们不起作用, 谢谢帮助我 这是我的代码

protected void AddNewSP(object sender, EventArgs e)
        {
            try
            { 
                string Id = ((TextBox)GridView1.FooterRow.FindControl("txtId")).Text;
                string PartName = ((TextBox)GridView1.FooterRow.FindControl("txtPartName")).Text;
                string Coverage = ((TextBox)GridView1.FooterRow.FindControl("txtCoverage")).Text;
                string SupplierName = ((TextBox)GridView1.FooterRow.FindControl("txtSupplierName")).Text;
                string Status = ((TextBox)GridView1.FooterRow.FindControl("txtStatus")).Text;                           
                    SqlConnection con = new SqlConnection(strConnString);
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "insert into SupplySituation(Id, PartName, Coverage, SupplierName, Status) " +
                    "values(@Id, @PartName, @Coverage, @SupplierName, @Status);" +
                    "select Id, PartName, Coverage, SupplierName, Status from SupplySituation ORDER BY Id DESC";
                    cmd.Parameters.Add("@Id", SqlDbType.VarChar).Value = Id;
                    cmd.Parameters.Add("@PartName", SqlDbType.VarChar).Value = PartName;
                    cmd.Parameters.Add("@Coverage", SqlDbType.VarChar).Value = Coverage;
                    cmd.Parameters.Add("@SupplierName", SqlDbType.VarChar).Value = SupplierName;
                    cmd.Parameters.Add("@Status", SqlDbType.VarChar).Value = Status;
                    GridView1.DataSource = GetData(cmd);
                    GridView1.DataBind();
                }
                catch (Exception ex)
                {
                    ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), Guid.NewGuid().ToString(), "alert('" + ex.Message.ToString() + "');", true);
                }         
        }

private DataTable GetData(SqlCommand cmd)
        {

            DataTable dt = new DataTable();
            SqlConnection con = new SqlConnection(strConnString);
            SqlDataAdapter sda = new SqlDataAdapter();
            cmd.CommandType = CommandType.Text;
            cmd.Connection = con;
            con.Open();
            sda.SelectCommand = cmd;
            sda.Fill(dt);
            return dt;           
        }

实际上没有任何错误或任何操作,当我点击带有错误数据的“添加”按钮时没有任何反应,我除了显示错误但没有任何反应

我的前台代码

<asp:GridView ID="GridView1" runat="server" Width="750px"
                                AutoGenerateColumns="False" Font-Names="Arial"
                                Font-Size="11pt" AlternatingRowStyle-BackColor="#C2D69B"
                                HeaderStyle-BackColor="green" AllowPaging="True" ShowFooter="True"
                                OnPageIndexChanging="OnPagingSP" OnRowEditing="EditSP"
                                OnRowUpdating="UpdateSP" OnRowCancelingEdit="CancelEditSP">

                                <Columns>

                                    <asp:TemplateField HeaderText="Id">
                                        <ItemTemplate>

                                            <asp:Label ID="lblId" runat="server"
                                                Text='<%# Eval("Id")%>'></asp:Label>

                                        </ItemTemplate>

                                        <FooterTemplate>

                                            <asp:TextBox ID="txtId" Width="20px"
                                                MaxLength="5" runat="server"></asp:TextBox>

                                        </FooterTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField ItemStyle-Width="50px" HeaderText="PartName">

                                        <ItemTemplate>

                                            <asp:Label ID="lblPartName" runat="server"
                                                Text='<%# Eval("PartName")%>'></asp:Label>

                                        </ItemTemplate>
                                        <EditItemTemplate>

                                            <asp:TextBox ID="txtPartName" runat="server"
                                                Text='<%# Eval("PartName")%>'></asp:TextBox>

                                        </EditItemTemplate>
                                        <FooterTemplate>

                                            <asp:TextBox ID="txtPartName" Width="100px"
                                                MaxLength="20" runat="server"></asp:TextBox>

                                        </FooterTemplate>

                                        <ItemStyle Width="30px" />

                                    </asp:TemplateField>

                                    <asp:TemplateField ItemStyle-Width="100px" HeaderText="Coverage">

                                        <ItemTemplate>

                                            <asp:Label ID="lblCoverage" runat="server"
                                                Text='<%# Eval("Coverage")%>'></asp:Label>

                                        </ItemTemplate>

                                        <EditItemTemplate>

                                            <asp:TextBox ID="txtCoverage" runat="server"
                                                Text='<%# Eval("Coverage")%>'></asp:TextBox>

                                        </EditItemTemplate>

                                        <FooterTemplate>

                                            <asp:TextBox ID="txtCoverage" runat="server"></asp:TextBox>

                                        </FooterTemplate>

                                        <ItemStyle Width="100px" />

                                    </asp:TemplateField>

                                    <asp:TemplateField ItemStyle-Width="150px" HeaderText="SupplierName">

                                        <ItemTemplate>

                                            <asp:Label ID="lblSupplierName" runat="server"
                                                Text='<%# Eval("SupplierName")%>'></asp:Label>

                                        </ItemTemplate>

                                        <EditItemTemplate>

                                            <asp:TextBox ID="txtSupplierName" runat="server"
                                                Text='<%# Eval("SupplierName")%>'></asp:TextBox>

                                        </EditItemTemplate>

                                        <FooterTemplate>

                                            <asp:TextBox ID="txtSupplierName" runat="server"></asp:TextBox>

                                        </FooterTemplate>

                                        <ItemStyle Width="150px" />

                                    </asp:TemplateField>

                                    <asp:TemplateField ItemStyle-Width="150px" HeaderText="Status">

                                        <ItemTemplate>

                                            <asp:Label ID="lblStatus" runat="server"
                                                Text='<%# Eval("Status")%>'></asp:Label>

                                        </ItemTemplate>

                                        <EditItemTemplate>

                                            <asp:TextBox ID="txtStatus" runat="server"
                                                Text='<%# Eval("Status")%>'></asp:TextBox>

                                        </EditItemTemplate>

                                        <FooterTemplate>

                                            <asp:TextBox ID="txtStatus" runat="server"></asp:TextBox>

                                        </FooterTemplate>

                                        <ItemStyle Width="150px" />

                                    </asp:TemplateField>

                                    <asp:TemplateField>

                                        <ItemTemplate>

                                            <asp:LinkButton ID="lnkRemove" runat="server"
                                                CommandArgument='<%# Eval("Id")%>'
                                                OnClientClick="return confirm('Do you want to delete?')"
                                                Text="Delete" OnClick="DeleteSP"></asp:LinkButton>

                                        </ItemTemplate>

                                        <FooterTemplate>

                                            <asp:Button ID="btnAddNewSP" runat="server" Text="Add"
                                                OnClick="AddNewSP" />

                                        </FooterTemplate>

                                    </asp:TemplateField>

                                    <asp:CommandField ShowEditButton="True" />

                                </Columns>

                                <AlternatingRowStyle BackColor="#C2D69B" />

                                <HeaderStyle BackColor="Green" />

                            </asp:GridView>

【问题讨论】:

  • 您的具体问题是什么?
  • 也许没有要捕获的错误?
  • I have used several method such as show on the label or java script 代码在哪里? but they didn't work,你得到什么错误?
  • 你的GetData()函数在哪里
  • 没有看到任何你提到什么不起作用的地方?

标签: c# asp.net gridview


【解决方案1】:

尝试替换你的 catch 块

catch (Exception ex)
            {
                    ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), Guid.NewGuid().ToString(), "alert('" + ex.Message.ToString() + "');", true);
            }         

以下内容:

 catch (Exception ex)
     {
          ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('" + ex.Message.ToString() + "');", true); 
     }

【讨论】:

  • 我看到这个错误:名称 thisGetType() 在当前上下文中不存在
  • 我的错,我的代码中有错字。我更正为:this.GetType(),如果您收到错误,则表示您在正确的轨道上。请重试
  • 问题: 1. 你确定catch 块已经到达了吗? 2. 尝试在您的页面上运行警报(“测试”),以确保您没有禁用脚本。
猜你喜欢
  • 2017-06-12
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多