我有GridView并且在gridview中我有一个女巫的超链接我试图将查询字符串传递到另一个页面。 ID是INT类型,但不确定为什么我收到此错误:
转换varchar值时转换失败' {0}&#39>到数据类型 INT
当我在不使用超链接的情况下自己加载详细信息页面时,它对我有用,但是当我点击超链接时,我得到了上面提到的这个错误。这是我的超链接代码:
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink2" Text="VIEW DETAIL" runat="server" NavigateUrl= "~/DET/MARKETING.aspx?ID={0}" Target="_blank">HyperLink</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
以下是详细信息页面的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string QUEST_SK = Request.QueryString["QUEST_SK"].ToString();
// string MPost_ID = "773";
sqlcon.Open();
sqlcmd = new SqlCommand("SELECT ID, DESC FROM Table1 WHERE ID= '" + ID+ "' ", sqlcon);
da = new SqlDataAdapter(sqlcmd);
da.Fill(dt);
sqlcon.Close();
GridView1.DataSource = dt;
GridView1.DataBind();
sqlcon.Close();
}
}
答案 0 :(得分:1)
SQL语句中的问题
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string QUEST_SK = Request.QueryString["QUEST_SK"].ToString();
// string MPost_ID = "773";
sqlcon.Open();
sqlcmd = new SqlCommand("SELECT ID, DESC FROM Table1 WHERE ID= " + ID, sqlcon);
da = new SqlDataAdapter(sqlcmd);
da.Fill(dt);
sqlcon.Close();
GridView1.DataSource = dt;
GridView1.DataBind();
sqlcon.Close();
}
}
您可以使用Eval
像
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink2" Text="VIEW DETAIL" runat="server" NavigateUrl= '<%# Eval("id","~/DET/MARKETING.aspx?ID={0}") %>' Target="_blank">HyperLink</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
或
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink2" Text="VIEW DETAIL" runat="server" NavigateUrl= '~/DET/MARKETING.aspx?ID=<%# Eval("ID") %>' Target="_blank">HyperLink</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>