网格视图行命令错误

本文关键字:错误 命令 视图 网格 | 更新日期: 2023-09-27 18:21:08

我有一个GridView设置的实体框架,有两个TemplateFields,每个调用一个弹出窗口,只显示数据库中的文本。两个TemplateFields都设置为ImageButtons

<asp:GridView ID="grvResults" runat="server" DataKeyNames="Soln_SolutionId"  OnRowCommand="grvResults_RowCommand" CssClass="dgstyle" />
<Columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
   <asp:ImageButton ID="imgPreview" runat="server" CommandName="viewDoc" CommandArgument='<%#Eval("Link")%>' ImageUrl="~/images/viewpage.gif" ImageAlign="Left" Width="25" Height="25" ToolTip="View attachment" AlternateText='<%#Eval("Link")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<ItemTemplate>
   <asp:ImageButton ID="imgDetail" runat="server" CommandName="viewDetail" CommandArgument='<%#Eval("Soln_SolutionId")%>' ImageUrl="~/images/docview.gif" ImageAlign="Left" Width="25" Height="25" ToolTip="View details about the page" AlternateText="View details" /></ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

代码隐藏 (C#(

protected void grvResults_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int DetailID = Convert.ToInt32(e.CommandArgument.ToString());
            using (VIPCRMEntities dbc = new VIPCRMEntities())
            {
                Solution selDetail = (from c in dbc.Solutions
                                      where c.Soln_SolutionId == DetailID
                                      select c).First();
                if (e.CommandName == "viewDetail")
                {
                    InfoModal.Show();
                    lblInfoText.Text = selDetail.Soln_SolutionDetails;
                }
                else if (e.CommandName == "viewDoc")
                {
                    InfoModal.Show();
                    lblInfoText.Text = selDetail.soln_link;
                }
            }
        }

如果我单击"查看详细信息"图像,它可以完美运行。如果我单击"viewDoc"图像,它将失败并出现以下异常:

输入字符串的格式不正确。说明:执行当前 Web 请求期间发生未经处理的异常。请查看堆栈跟踪,了解有关错误及其在代码中起源位置的详细信息。

异常

详细信息:系统格式异常:输入字符串不在 格式正确。

源错误:

第 151 行:int 详细 ID = Convert.ToInt32(e.CommandArgument.ToString(((;

现在有没有人会发生这种情况以及如何解决它?

网格视图行命令错误

异常详细信息:System.FormatException:输入字符串格式不正确。

此错误指出该值为 null 或非数字值。附加调试器并检查要接收的值

你应该像下面这样更改你的代码

int DetailID;
int.TryParse(e.CommandArgument.ToString(), out DetailID);

有关更多参考,请单击此链接:int index = Convert.ToInt32(e.CommandArgument.ToString(((;不工作

这是我的行命令上的逻辑错误。实体模型不喜欢在 Gridview 行命令中使用共享变量的整个想法。我仍然在阅读这个。

但这是有效的代码。

if (e.CommandName == "viewDetail")
            {
                int DetailID = Convert.ToInt32(e.CommandArgument.ToString());
                using (VIPCRMEntities dbc = new VIPCRMEntities())
                {
                    Solution selDetail = (from c in dbc.Solutions
                                          where c.Soln_SolutionId == DetailID
                                          select c).First();
                    InfoModal.Show();
                    lblInfoText.Text = selDetail.Soln_SolutionDetails;
                }
            }
            else if (e.CommandName == "viewDoc")
            {
                int DetailID = Convert.ToInt32(e.CommandArgument.ToString());
                using (VIPCRMEntities dbc = new VIPCRMEntities())
                {
                    Solution selDetail = (from c in dbc.Solutions
                                          where c.Soln_SolutionId == DetailID
                                          select c).First();
                    InfoModal.Show();
                    lblInfoText.Text = selDetail.soln_link;
                }               
            }