Как получить значение SelectedDataKey в событии GridView RowCommand? - PullRequest
1 голос
/ 04 декабря 2010

У меня есть один Gridview, подобный этому.

<asp:GridView runat="server" ID="gvMRLSearch" Width="100%" AutoGenerateColumns="false"
                                CssClass="datagrid" DataKeyNames="MRLID" >
<Columns>
   <asp:BoundField DataField="MRLID" HeaderText="MRL ID" Visible="false" />
   <asp:BoundField DataField="MRLCreateDate" HeaderText="MRL Create Date" />
   <asp:BoundField DataField="MRLNumber" HeaderText="MRL Number" />   
   <asp:ButtonField ButtonType="Link" CommandName="printReport" Text="Print" HeaderText="Action" />
</Columns>
</asp:GridView>

Я хочу получить значение MRLID для события GridView_RowCommand. Я пытался так:

protected void gvMRLSearch_RowCommand(object sender, GridViewCommandEventArgs e)
{
  try
    {
       if (e.CommandName == "printReport")
       {
         int MRLID = Convert.ToInt32(gvMRLSearch.SelectedDataKey.Value);

Но я получаю только MRLID в первой строке, если снова выбрать второй, я получаю MRLID в первой строке.

Ответы [ 2 ]

2 голосов
/ 04 декабря 2010

Это потому, что при вызове обработчика событий RowCommand он не изменит выбранную строку сетки

установит свойство SelectedIndex сетки

1 голос
/ 06 декабря 2010

Я получил ответ.

if (e.CommandName == "printReport")
        {
            int rowindex = Convert.ToInt32(e.CommandArgument);
            int MRLID = Convert.ToInt32(gvMRLSearch.DataKeys[rowindex].Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...