网格视图行命令错误
本文关键字:错误 命令 视图 网格 | 更新日期: 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;
}
}