代码之家  ›  专栏  ›  技术社区  ›  Tronics

如何在radgrid中查找选定行的列值

  •  3
  • Tronics  · 技术社区  · 15 年前

    我正在使用 RadGrid rowcontextmenu . 当我右击一个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 值我得到一个错误。如何获得 选定行的值?

    4 回复  |  直到 7 年前
        1
  •  6
  •   fhcimolin Sofox    7 年前

    请尝试以下操作。它对我有用。

    GridDataItem item =(GridDataItem)rg200.MasterTableView.Items[rg200.SelectedItems[0].ItemIndex];
    
    lblOrdHeadName.Text = item["HeadendName"].Text;
    
        2
  •  1
  •   saluce jkm    13 年前

    您可以使用下面的代码循环所选的项,并将ID值存储到数组中,从而将其传递给方法。同时设置 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++;   
            }   
        }   
    }  
    
        3
  •  1
  •   saluce jkm    13 年前

    请尝试此代码以获取 Headend Name 右键单击行中的值:

    lblOrdHeadName.Text = (rg200.MasterTableView.FindItemByKeyValue("orderId") as GridDataItem)["Headend Name"].Text;
    
        4
  •  1
  •   fhcimolin Sofox    7 年前

    我找到了解决办法:

    GridDataItem item = (GridDataItem)rg200.MasterTableView.Items[radGridClickedRowIndex];
    
    lblOrdHeadName.Text = item["HeadendName"].Text;
    
    推荐文章