Как найти значения столбцов выбранной строки в Radgrid - PullRequest
3 голосов
/ 29 июля 2010

Я использую RadGrid с rowcontextmenu. Когда я щелкну правой кнопкой мыши по строке RadGrid и выберу «edit edit», откроется всплывающее окно.

Что мне нужно, так это когда я щелкаю правой кнопкой мыши по строке Radgrid, я просто хочу получить значения 3 столбцов для этой конкретной выбранной строки. Например, когда я щелкаю правой кнопкой мыши по выбранной строке Radgrid, я хочу получить Customer name, Headend name, Site name значения этой выбранной строки.

Вот мой код:

<MasterTableView GridLines = "None" DataKeyNames="orderId" CommandItemDisplay="Top"
                            EditMode="EditForms">
    <Columns>
        <telerik:GridClientSelectColumn UniqueName = "ClientSelectColumn" HeaderStyle-Width="3%"
            ItemStyle-Width="3%">
            <HeaderStyle Width = "3%" ></ HeaderStyle >
            <ItemStyle Width="3%"></ItemStyle>
        </telerik:GridClientSelectColumn>
        <telerik:GridBoundColumn UniqueName = "sId" HeaderText="sId" DataField="sId" ReadOnly="true"
            Visible="false">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn UniqueName = "orderId" HeaderText="orderId" Visible="false"
            ReadOnly="true" DataField="orderId">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn UniqueName = "Customer Name" HeaderText="Customer Name" DataField="Customer Name"
            ReadOnly="true">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn UniqueName = "Market Name" HeaderText="Market Name" DataField="Market Name"
            ReadOnly="true">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn UniqueName = "LOB" HeaderText="LOB" DataField="LOB" ReadOnly="true">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn UniqueName = "Headend Name" HeaderText="Headend Name" DataField="Headend Name"
            ReadOnly="true">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn UniqueName = "Project Name" HeaderText="Project Name" DataField="Project Name"
            ReadOnly="true">
        </telerik:GridBoundColumn>
        <telerik:GridTemplateColumn UniqueName = "Site Name" HeaderText="Site Name" DataField="SiteName"
            ReadOnly="true">
            <ItemTemplate>
                <asp:LinkButton ID = "lnkSiteName" runat="server" Text='<%# Eval( "Site Name" ) %>'
                    ForeColor="Blue" CommandName="sitename"></asp:LinkButton>
            </ItemTemplate>
        </telerik:GridTemplateColumn>
        <telerik:GridBoundColumn UniqueName = "Task Status" HeaderText="Task Status" DataField="Task Status"
            ReadOnly="true">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn UniqueName = "Clarify Account Nbr" HeaderText="Clarify Account Nbr"
            DataField="Clarify Account Nbr">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn UniqueName = "Site ID" HeaderText="Site ID" DataField="Site ID">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn UniqueName = "Quote ID" HeaderText="Quote ID" DataField="Quote ID">
        </telerik:GridBoundColumn>
        <telerik:GridCheckBoxColumn UniqueName = "EDP Created?" HeaderText="EDP Created?" DataField="EDP Created?">
        </telerik:GridCheckBoxColumn>
        <telerik:GridEditCommandColumn UniqueName = "EditCommandColumn" Display="false">
        </telerik:GridEditCommandColumn>
    </Columns>
</Mastertableview>
protected void RadMenu1_ItemClick(object sender, RadMenuEventArgs e)
{
    int radGridClickedRowIndex;

    radGridClickedRowIndex = Convert.ToInt32(Request.Form["radGridClickedRowIndex"]);

    switch (e.Item.Text)
    {
        case "Edit Task":
            string OrdID = rg200.MasterTableView.DataKeyValues[radGridClickedRowIndex]["orderId"].ToString();
            lblOrdHeadName.Text = rg200.MasterTableView.NamingContainer.FindControl("Headend Name").ToString();

            Session["orderId"] = OrdID;
            ifrmPopups.Style.Add("height", "409px");
            StringBuilder Script = new StringBuilder();
            Script.Append("document.getElementById('ctl00_PagePlaceholder_WinEditForm_C_ifrmPopups');openpopups()");
            RadAjaxManager1.ResponseScripts.Add(Script.ToString());
            rg200.Rebind();
            break;
    }
}

Если вы видите приведенный выше код, я могу получить значение orderId для этого выбранного столбца. Но когда я пытаюсь получить значение Headend Name, я получаю сообщение об ошибке. Как получить значение Headend Name для выбранной строки?

Ответы [ 4 ]

6 голосов
/ 24 сентября 2012

Попробуйте следующее.У меня это сработало.

GridDataItem item =(GridDataItem)rg200.MasterTableView.Items[rg200.SelectedItems[0].ItemIndex];

lblOrdHeadName.Text = item["HeadendName"].Text;
1 голос
/ 31 июля 2010

Я нашел решение:

GridDataItem item = (GridDataItem)rg200.MasterTableView.Items[radGridClickedRowIndex];

lblOrdHeadName.Text = item["HeadendName"].Text;
1 голос
/ 07 декабря 2010

Вы можете использовать следующий код для циклического перебора выбранных элементов, сохранения значений идентификаторов в массиве и передачи его методу.Также установите свойство EnablePostBackOnRowClick сетки на true

protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)   
{   
    string[] array = new string[10];   
    int i = 0;   
    if (e.CommandName == "RowClick")   
    {   
        foreach (GridDataItem item in RadGrid1.SelectedItems)   
        {   
            array[i] = item.GetDataKeyValue("EmpID").ToString();  // storing to array   
            i++;   
        }   
    }   
}  
1 голос
/ 30 июля 2010

Попробуйте этот код, чтобы получить значение Headend Name из строки, нажатой правой кнопкой мыши:

lblOrdHeadName.Text = (rg200.MasterTableView.FindItemByKeyValue("orderId") as GridDataItem)["Headend Name"].Text;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...