prudhvi_chanti Ответов: 1

Вызов метода usercontrol из gridview onrowcommand


Привет,
В моей сетке, у меня есть один imgbutton и пользовательских элементов управления linkbutton и привязки сетки данных. Я использую RowCOmmand
Проблемы
1. Можете получить пользовательский идентификатор
2. Можете получить методы управления.

Может ли кто-нибудь дать мне какое-нибудь предложение, как решить эту проблему?

Что я уже пробовал:

HI,
 <pre> <asp:GridView runat="server" ID="grdNotfiy" OnRowCommand="grdNotfiy_RowCommand" OnRowDataBound="grdNotfiy_RowDataBound" GridLines="None" Width="100%"
                AutoGenerateColumns="false" DataKeyNames="KeyIdUnique,ReferenceKey">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <table style="padding: 5px;">
                                <tr style="border: none;">
                                    <td style="border: none;">
                                        <asp:Label ID="lblAlertTypeId" runat="server" Text='<%#Eval("AlertTypeId")%>' Visible="false"></asp:Label>
                                        <asp:HiddenField ID="hdnKeyId" runat="server" Value='<%# Eval("KeyIdUnique") %>' />
                                        <a href="div<%# Eval("PageId")%>" id="imgCollapse">
                                            <asp:ImageButton runat="server" ID="imgNotify" CommandName="NotifyValidate"
                                                ImageUrl='<%# Eval("NotifyImage")%>' Height="30" Width="30" CssClass="mt-1" />
                                        </a>
                                    </td>
                                    <td style="border: none; width: 200px; padding: 10px;">
                                        <a href="div<%# Eval("KeyIdUnique")%>" id="expndPopup">
                                            <asp:LinkButton runat="server" ForeColor="Brown" ID="lnkNotify"
                                                Text='<%# Eval("AlertNotes") %>'
                                                CommandName="Select">
                                            </asp:LinkButton>
                                        </a>
                                    </td>
                                </tr>
                                <div class="dvDetails">
                                    <tr class="detail" id="myDetail" runat="server" style="overflow: hidden; border-color: #fff; display: none;">
                                        <td id="Td1" colspan="3" runat="server">
                                            <h1>hello</h1>
                                            <Kolme:LeaveAprrve ID="usrLveArpvls" runat="server" LeaveApprve='<%# Eval("KeyIdUnique") %>'/>
                                        </td>
                                    </tr>
                                </div>
                                <tr>
                                    <td></td>
                                    <td style="border: none;">
                                        <asp:LinkButton ID="lnkSave" CssClass="mt-2 align-content-center"
                                            runat="server" Style="text-align: center;" Width="30" Height="22" ToolTip="Approve"
                                            CommandName="LApprove" CommandArgument='<%#((GridViewRow) Container).RowIndex %>'><span><img src="../../Images/accept_button.png" width="20" height="20" 
                                          style="margin-top:-10px;" alt="Save" /></span>
                                        </asp:LinkButton>
                                    </td>
                                </tr>
                                <tr>
                                    <td colspan="2" style="border: 1px solid groove">
                                        <hr />
                                    </td>
                                </tr>
                            </table>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>


охраняемых недействительными grdNotfiy_RowCommand(объект отправителя, GridViewCommandEventArgs е)
{
GridViewRow clickedRow = ((LinkButton)e.CommandSource).NamingContainer как GridViewRow;
строка cmndName = e.CommandName;
if (cmndName == "Select")
{
var lveRqstId = грднотфий.DataKeys[clickedRow.Параметр rowindex].Значения["KeyIdUnique"];
var refkey = грднотфий.DataKeys[clickedRow.Параметр rowindex].Значения["ReferenceKey"];
if (refkey != null)
{
ВАР в JSON = refkey.Метод toString();
DashBoardAlert key = JsonConvert.DeserializeObject<dashboardalert>(json);
строка empid = ключ.столбец EmployeeID.Метод toString();

если (!строка.IsNullOrEmpty(empid))
{
Сеанс["NotifyEmpId"] = empid;
}
}
if (lveRqstId != null && lveRqstId != "")
{
Сессия["LveReqstId"] = lveRqstId;
}


Control userControl =(clickedRow.FindControl("usrLveArpvls") как элемент управления);
if (userControl != null)
{
GridView nestdGrid = (userControl.FindControl("grdLeaves") как GridView);

}
}
}

Код пользовательского элемента управления

публичный список<approveleaverequestlistview> GetData(строка leaverequestid)
{

возврат lstApproveLeaves;

}
}

1 Ответов

Рейтинг:
1

prudhvi_chanti

Наконец, я нашел решение. Если есть какие-то потребности, используйте это.

Условия:

1. Не используйте элемент управления UserControl вместо использования встроенных в GridView в
2. Создайте новую страницу, которая наследует Usercontrol от Page_load
3. Пропуск строки запроса то вам методов управления.

Решение:

<div class="dvDetails">
                                   <tr class="detail" id="myDetail" runat="server" style="overflow: hidden; border-color: #fff; display: none;">
                                       <td id="Td1" colspan="3" runat="server">
                                           <asp:UpdatePanel runat="server">
                                               <ContentTemplate>
                                                   <iframe id="dsplyLeaveApvls"  runat="server" style="height: 390px; margin-left: -25px; border: none" src="DisplayLeaveAprovals.aspx?lverqstId=<%# Eval("KeyIdUnique")%>">" ></iframe>
                                               </ContentTemplate>
                                               <Triggers>
                                                   <asp:AsyncPostBackTrigger ControlID="lnkNotify" EventName="Click" />
                                               </Triggers>
                                           </asp:UpdatePanel>

                                       </td>
                                   </tr>
                               </div>


новая страница:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DisplayLeaveAprovals.aspx.cs" Inherits="Kolme.Portal.Pages.Notification.DisplayLeaveAprovals" %>

<%@ Register Src="~/UserControls/LeaveApproval.ascx" TagName="LeaveAprrve" TagPrefix="Kolme" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="~/Scripts/jquery-3.0.0.js"></script>
    <script src="~//Scripts/bootstrap.js"></script>
    <link href="~/Content/bootstrap.min.css" rel="stylesheet" />
    <%-- <link href="https://use.fontawesome.com/releases/v5.0.4/css/all.css" rel="stylesheet" />--%>
    <link href=".~//Styles/PageStyles.css" rel="stylesheet" />
    <link href="~/Styles/MasterStyles.css" rel="stylesheet" />
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
        </div>
        <div class="container">
            <Kolme:LeaveAprrve ID="usrLveArpvls" runat="server" />
        </div>
    </form>
</body>
</html>

public partial class DisplayLeaveAprovals : System.Web.UI.Page
   {
       protected void Page_Load(object sender, EventArgs e)
       {
           if (!IsPostBack)
           {
               if (!string.IsNullOrEmpty("lverqstId"))
               {
                   usrLveArpvls.leaveRequstId = Request.QueryString["lverqstId"];
               }
           }

       }
   }


Наконец-То Код Пользовательских Элементов Управления :

public string leaveRequstId { get; set; }

       #endregion
       protected void Page_Load(object sender, EventArgs e)
       {
           if (Session["CurrentUser"] != null && Session["CurrentUser"] != "")
           {
               objCurrentUser = (CurrentUser)Session["CurrentUser"];
           }
           if (!IsPostBack)
           {
               if (string.IsNullOrEmpty(txtName.Text))
               {
                   Session["LCmnts"] = txtName.Text;
               }
               else
               {
                   Session["LCmnts"] = txtName.Text;
               }
               BindData();
           }
       }

       private void BindData()
       {
           grdLeaves.DataSource = GetData(leaveRequstId);
           grdLeaves.DataBind();
       }

Не забудьте создать свойство для идентификатора параметра

Спасибо и с уважением,
В. prudhvi
Пока