2013-11-20 3 views
0

gvSquid2에서 선택 버튼을 클릭하면 x가 유효하고 올바른 값을 얻습니다. gvSquid에서 선택 버튼을 클릭하면 gv가 있기 때문에 ArgumentOutOfRange 예외가 발생합니다. SelectedIndex = 0. 또한, gv. SelectedDataKey이 null입니다. DataKey 정보를 얻으려면 어떻게해야합니까? 열을 사용자가 숨겨야하므로 허용되지 않습니다. DataBind() 동안 값이 삭제되므로 열을 숨기는 것은 쓸모가 없습니다. 나는 마이크로 소프트의 웹 사이트에서이 예를 찢었다. 내가 뭘 놓치고 있니?GridView를 사용할 때 SelectedIndex는 사용자 정의 선택 버튼을 사용할 때 항상 0입니다.

<asp:gridview ID="gvSquid2" DataSourceID="dsComments" AutoGenerateColumns="false" AutoGenerateSelectButton="true" DataKeyNames="ID" OnSelectedIndexChanged="gvSquid_SelectedIndexChanged" runat="server" EnableViewState="false"> 
    <Columns> 
     <asp:BoundField DataField="Date" ReadOnly="true" HeaderText="Date" SortExpression="Date" /> 
     <asp:BoundField DataField="Comment" ReadOnly="true" HeaderText="Comment" SortExpression="Comment" /> 
     <asp:BoundField DataField="Username" ReadOnly="true" HeaderText="User" SortExpression="Username" /> 
    </Columns> 
</asp:gridview> 

<asp:gridview ID="gvSquid" DataSourceID="dsComments" AutoGenerateColumns="false" DataKeyNames="ID" OnSelectedIndexChanged="gvSquid_SelectedIndexChanged" runat="server" EnableViewState="false"> 
    <Columns> 
    <asp:CommandField ButtonType="Image" HeaderText="Select" ShowSelectButton="true" SelectImageUrl="~/includes/RedX.jpg" /> 
    <asp:BoundField DataField="Date" ReadOnly="true" HeaderText="Date" SortExpression="Date" /> 
    <asp:BoundField DataField="Comment" ReadOnly="true" HeaderText="Comment" SortExpression="Comment" /> 
    <asp:BoundField DataField="Username" ReadOnly="true" HeaderText="User" SortExpression="Username" /> 
    </Columns> 
</asp:gridview> 

protected void gvSquid_SelectedIndexChanged(object sender, EventArgs e) { 
    string x; 
    x = gvSquid.DataKeys[gvSquid.SelectedIndex].Value.ToString(); 
} 

답변

0

내가 그것을 알아 냈어. EnableViewState="true"을 설정해야합니다. 일단 내가 그것을 바꿨다면 갑자기 DataKeys가 나타났습니다.

This question helped.

1

이처럼 RowIndex에 도착하기 위해 SelectedRow 그리드 뷰를 사용해보십시오 :

protected void gvSquid_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string x; 
    GridViewRow theGridViewRow = gvSquid.SelectedRow; 
    x = gvSquid.DataKeys[theGridViewRow.RowIndex].Value.ToString(); 
} 
+0

'gvSquid.SelectedRow.RowIndex = 0', 그래서 난 아직도 ArgumentOutOfRange 예외를 얻고있다. 그 문제에 대해,'gvSquid.DataKeys.Count = 0', 그래서 나는 모든 DataKey 관련 잃어버린 것 같습니다. –

관련 문제