Получить свойство скрытого объекта на основе выбранного элемента строки сетки C # - PullRequest
2 голосов
/ 22 марта 2012

У меня есть DataGrid, источником данных которого является коллекция объектов. Теперь сетка данных настроена для отображения только подмножества свойств объектов. Одним из скрытых свойств является переменная ID, которую мне нужно получить после выбора строки, соответствующей этому объекту.

Я знаю, что вы можете прослушивать щелчки строк с помощью обработчика событий SelectIndexChanged .... но как можно получить при фактическом исходном объекте соответствующий код строке?

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Я вижу, вы отметили свой вопрос "Telerik".

Используете ли вы DataGrid или RadGrid? Да.

Затем укажите, какое событие вызывать в вашем файле .aspx:

<telerik:RadGrid ID="RadGrid1" runat="server" 
            AutoGenerateColumns="False" 
            GridLines="None"  
            OnSelectedIndexChanged="RadGrid1_SelectedIndexChanged" > 
            (...)
</telerik:RadGrid>

И объявите событие в вашем файле .asp:

protected void RadGrid1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var dataItem = e.Item.DataItem; 
    if (dataItem != null) 
    { 
        int dataItemID = (dataItem As ObjectClassName).ID;
    } 
} 

* Замените "ObjectClassName" типом вашего объекта.

0 голосов
/ 23 марта 2012

При использовании Telerik RadGrid вы должны использовать API Telerik, которые предоставляют вам 2 свойства, которые вы можете установить: DataKeyNames и ClientDataKeyNames.До тех пор, пока столбец появляется в исходном источнике данных, все, что вы укажете в этих двух свойствах, будет доступно как на стороне сервера, так и на стороне клиента для любой строки.Ниже описано, как получить эти значения для SelectedIndexChanged (на стороне сервера) и OnRowSelected (на стороне клиента)

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false"
  OnSelectedIndexChanged="RadGrid1_SelectedIndexChanged">
  <MasterTableView DataKeyNames="Id,HiddenVal1,HiddenVal2" ClientDataKeyNames="Id,HiddenVal1,HiddenVal2,clientsideSpecialId">
    <Columns>
      <telerik:GridButtonColumn CommandName="Select" Text="Select" UniqueName="SelectColumn" />
      <telerik:GridBoundColumn UniqueName="ContactName" HeaderText="Contact name" DataField="ContactName" />
      <telerik:GridBoundColumn UniqueName="ContactTitle" HeaderText="Contact title" DataField="ContactTitle" />
    </Columns>
  </MasterTableView>
  <ClientSettings>
   <ClientEvents OnRowSelected="RowSelected"/>
  </ClientSettings>
</telerik:RadGrid>

Извлечение значения скрытого поля на стороне сервера для выбранного индекса изменено:

    protected void RadGrid1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (RadGrid1.SelectedItems == null || RadGrid1.SelectedItems.Count == 0)
            return;

        var dataItem = RadGrid1.SelectedItems[0] as GridDataItem;
        if (dataItem != null)
        {
            var myId = dataItem.GetDataKeyValue("id").ToString();
            var hiddenfield1 = dataItem.GetDataKeyValue("HiddenVal1").ToString();
            //do stuff
        }
    }

и затем получение скрытых значений полей на стороне клиента при выборе строки с помощью ClientEvents OnRowSelected

function RowSelected(sender,eventArgs)
{
    var HiddenVal1 = eventArgs.getDataKeyValue("HiddenVal1")
    //do stuff
}
0 голосов
/ 22 марта 2012

Вы можете получить доступ к DataItem как, а затем привести предмет к соответствующему типу и получить доступ к его свойствам оттуда

.

Быстрый ссылка показывает, как это можно сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...