<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를 제공합니다GridView 템플릿 - 선택한 행의 데이터를 가져 오는 방법
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];
안녕하세요 데이비드, 귀하의 의견 감사 (희망 누군가가 잘못 나를 증명) 찾습니다. 나는 데이터 세트에 다른 비 표시 필드가 있다는 것을 설명하기 위해 질문을 편집했다. 나는 이미 얻은 productID를 사용하여 그들에게 다가 갈 수 있습니다. 그러나 뭔가 좀 더 우아한 접근 방식이 나에게 말해 ... TemplateFields는 항상 이런 유형의 시나리오에서 나를 혼란스럽게합니다. Anthony :-) – IrishChieftain
감사합니다. David, 답변입니다. DataSet에서 직접 데이터를 가져올 수있었습니다. Anthony :-) – IrishChieftain
다른 사람들을 위해서, 앞에서 얻은 productID에 대한 일치 항목을 얻기 위해 DataSet의 테이블 행을 반복하여 선택한 행의 색인을 가져 왔습니다. 그런 다음 나머지 데이터에 액세스 할 수있었습니다. – IrishChieftain