我的FromView有问题.我想在FormView中显示数据库表中的一些数据.但有些数据来自tupe Int32,而这些数据应该是TextBox,一个字符串.
你如何转换这些Int32的.
FormView和我的ObjectDataSource
<asp:FormView ID="fvDetailOrder" runat="server">
<ItemTemplate>
Aantal:<br />
<asp:Label CssClass="txtBox" ID="Label15" runat="server" Text='<%# Eval("COUNT") %>' /><br />
Prijs:<br />
<asp:Label CssClass="txtBox" ID="Label16" runat="server" Text='<%# Eval("PRICE") %>' /><br />
Korting:<br />
<asp:Label CssClass="txtBox" ID="Label17" runat="server" Text='' /><br />
Totaal:<br />
<asp:Label CssClass="txtBox" ID="Label18" runat="server" Text='<%# Eval("AMOUNT") %>' /><br />
Betaald:<br />
<asp:Label CssClass="txtBox" ID="Label19" runat="server" Text='<%# Eval("PAID") %>' /><br />
Datum betaling:<br />
<asp:Label CssClass="txtBox" ID="Label20" runat="server" Text='<%# Eval("PDATE") %>' /><br />
</ItemTemplate>
</asp:FormView>
<asp:ObjectDataSource ID="objdsOrderID" runat="server"
OnSelecting="objdsOrderID_Selecting" SelectMethod="getOrdersByID"
TypeName="DAL.OrdersDAL">
<SelectParameters>
<asp:Parameter Name="id" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)
我的代码背后
protected void gvOrdersAdmin_SelectedIndexChanged(object sender, EventArgs e)
{
fvDetailOrder.DataSource = objdsOrderID;
fvDetailOrder.DataBind(); // <-- HERE I GET THE ERROR
}
protected void objdsOrderID_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
e.InputParameters["id"] = gvOrdersAdmin.DataKeys[gvOrdersAdmin.SelectedRow.RowIndex].Values[0];
}
Run Code Online (Sandbox Code Playgroud)
我的数据访问图层
public static DataTable getOrdersByID(string id)
{
string sql = "SELECT 'AUTHOR' = tblAuthors.FIRSTNAME + ' ' + tblAuthors.LASTNAME, tblBooks.*, tblGenres.*, tblLanguages.*, tblOrders.* FROM tblAuthors INNER JOIN tblBooks ON tblAuthors.AUTHOR_ID = tblBooks.AUTHOR_ID INNER JOIN tblGenres ON tblBooks.GENRE_ID = tblGenres.GENRE_ID INNER JOIN tblLanguages ON tblBooks.LANG_ID = tblLanguages.LANG_ID INNER JOIN tblOrders ON tblBooks.BOOK_ID = tblOrders.BOOK_ID"
+ " WHERE tblOrders.ID = @id;";
SqlDataAdapter da = new SqlDataAdapter(sql, GetConnectionString());
da.SelectCommand.Parameters["id"].Value = id;
DataSet ds = new DataSet();
da.Fill(ds, "Orders");
return ds.Tables["Orders"];
}
Run Code Online (Sandbox Code Playgroud)
非常感谢.
您可以使用类型设置参数"id"的值string.但是tblOrders.ID是类型的int.
试试这个:
da.SelectCommand.Parameters["id"].Value = Int32.Parse(id);
Run Code Online (Sandbox Code Playgroud)
甚至这个(比以前的代码更快速,更安全):
int i;
if (Int32.TryParse(id, out i))
{
da.SelectCommand.Parameters["id"].Value = i;
}
else
{
throw new ArgumentException("id");
}
Run Code Online (Sandbox Code Playgroud)
还有下一步做的更好:
var table = CreateDataTable();
new SqlDataAdapter(command).Fill(table);
return table;
Run Code Online (Sandbox Code Playgroud)
而不是使用DataSet
| 归档时间: |
|
| 查看次数: |
6290 次 |
| 最近记录: |