У меня есть ASP.NET GridView
, привязанный к ObjectDataSource
(привязанный к базе данных MySQL). В этой сетке у меня есть 2 несвязанных ButtonField
столбца, которые я хочу запускать на стороне сервера. Поэтому я добавил метод обработчика событий к событию GridView
RowCommand
.
В коде указанного обработчика событий мне нужно каким-то образом получить базовый DataRow
, на который нажал пользователь. Тем не менее, я не могу заставить это работать; если я использую код, подобный следующему, переменная selectedRow
всегда будет null
:
protected void searchResultsGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
CallDataRow selectedRow = (CallDataRow) searchResultsGridView.Rows[Convert.ToInt32(e.CommandArgument)].DataItem;
}
Я гуглил и нашел такие страницы, как http://ranafaisal.wordpress.com/2008/03/31/how-to-get-the-current-row-in-gridview-row-command-event,, но ничего, что я нашел, не помогло Я почти уверен, что упускаю что-то очевидное, но не могу понять, что ...
Вот код ASP.NET, если это поможет:
<asp:GridView ID="searchResultsGridView" runat="server" AutoGenerateColumns="False"
DataKeyNames="PersonNo,CallDate"
Width="100%" AllowPaging="True" EnableSortingAndPagingCallbacks="True"
onrowcommand="searchResultsGridView_RowCommand" PageSize="20">
<Columns>
<asp:BoundField DataField="PersonNo" HeaderText="Account number" ReadOnly="True"
SortExpression="PersonNo" />
<asp:BoundField DataField="AgentNo" HeaderText="Agent number"
SortExpression="AgentNo" />
<asp:BoundField DataField="AgentName" HeaderText="Agent name"
SortExpression="AgentName" />
<asp:BoundField DataField="TelNumber" HeaderText="Telephone number"
SortExpression="TelNumber" />
<asp:BoundField DataField="CallDate" HeaderText="Call date/time" ReadOnly="True"
SortExpression="CallDate" />
<asp:ButtonField CommandName="play" HeaderText="Audio" ShowHeader="True"
Text="Play" />
<asp:ButtonField CommandName="download" Text="Download" />
</Columns>
</asp:GridView>