我有一个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>
。
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;
}
}
}
背后的代码(C#)
{{1}}
如果我点击&#34; viewDetails&#34;图像,它完美地运作。 如果我点击&#34; viewDoc&#34;它失败,但出现以下异常:
输入字符串的格式不正确。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.FormatException:输入字符串不在 格式正确。
来源错误:
第151行:int DetailID = Convert.ToInt32(e.CommandArgument.ToString());
现在有人为什么会这样,以及如何修复它?
答案 0 :(得分:0)
异常详细信息:System.FormatException:输入字符串的格式不正确。
此错误表明该值为null或非nummeric。连接调试器,检查您正在接收的值
答案 1 :(得分:0)
您应该更改以下代码
int DetailID;
int.TryParse(e.CommandArgument.ToString(), out DetailID);
更多参考此链接: int index = Convert.ToInt32(e.CommandArgument.ToString()); is not working
答案 2 :(得分:0)
这是我的Row Command上的逻辑错误。实体模型不喜欢在Gridview Row Command中使用共享变量的整个想法。我还在读这篇文章。
但这是有效的代码。
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;
}
}