<asp:TemplateField>
<ItemTemplate>
<table width="540" cellpadding="5">
<tr>
<td align="left" style="width:60%;">
<img src='PurchaseHandler.ashx?ProductID=<%# Eval("ProductID")%>'
alt="<%# Eval("ProductName") %>" />
</td>
<td align="left">
<h3 style="text-align:left;">
<asp:Label ID="nameLabel" runat="server"
Text='<%# Eval("ProductName") %>' />
</h3>
<asp:Label ID="priceLabel" runat="server" Text='<%# Eval("Price") %>' />
<br />
<asp:LinkButton ID="cartLink" runat="server" Text="<b>Add to Cart</b>"
CommandName="Add" CommandArgument='<%# Eval("ProductID") %>' />
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
GridViewでの表示に使用されていないフィールドを含むショッピングカートビジネスオブジェクトを使用しています。RowCommandイベントハンドラーで次に実行しようとしているのは、選択した行から残りのデータフィールドを取得することです。これにより、選択した行から正しい製品IDが得られます。
if (e.CommandName == "Add")
{
int productID = 0;
int.TryParse(e.CommandArgument as string, out productID);
// Big blank!
}
選択した行から残りのデータフィールドを取得してカートに入力するにはどうすればよいですか?説明として、おそらくproductIDを使用して、Session状態からプルされたDataSetを掘り下げ、その方法でデータを取得できます。しかし、私が判断しようとしているのは、この状況で使用できるこれに似た構文があるかどうかです。
DataRow[] rows = ds.Tables[0].Select("ProductID=" +
gridProducts.SelectedDataKey.Values["ProductID"].ToString());
DataRow row = rows[0];