Как подключить LinkButton в GridView с ModalPopupExtender в ASP.Net C #? - PullRequest
1 голос
/ 28 сентября 2011

Мне действительно нужна помощь здесь.Я пытаюсь подключить кнопку ссылки в моем GridView к ModalPopupExtender, но безуспешно.По сути, у меня есть GridView, который перечисляет всю информацию о пользователях из базы данных, и я сделал имя пользователя в виде кнопки ссылки.Когда вы нажимаете на имя пользователя, должен появиться модалпопуп, и вы сможете редактировать пользователя и обновлять базу данных.У меня также есть кнопка Добавить.когда вы нажимаете кнопку, должен появиться тот же модалпопуп, и вы можете добавить нового пользователя в базу данных.Ниже приведены мои aspx и код.Пока у меня есть две основные проблемы.(1) OnClick даже не срабатывает постоянно.(2) modalpopup не отображается при нажатии на кнопку ссылки на имя пользователя.Очень признателен, если кто-то может помочь мне здесь.

Вот моя страница aspx:

<%@ Page Title="" Language="C#" MasterPageFile="~/Default.Master" AutoEventWireup="true" CodeBehind="EditUsers.aspx.cs" Inherits="SPR2_v1.EditUsers" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">


<div id="pagetitle">
    <h1>SPR Users</h1>
</div>
<div >
    <asp:Label ID="lblErrorMsg" runat="server" ForeColor="Red"></asp:Label>
    <table align="center" >
        <tr>
            <td align="right">
                <asp:Button ID="btnAddUser" runat="server" Text="Add User" Width="85px" 
                    onclick="btnAddUser_Click" />
            </td>
        </tr>
        <tr>
            <td align="left">
                <asp:GridView ID="gvUsers" runat="server" AllowPaging="True" 
                    AllowSorting="True" AutoGenerateColumns="False" 
                    DataSourceID="SqlDSUsers" EnableViewState="False">
                    <Columns>
                        <asp:TemplateField HeaderText="UserName">
                        <ItemTemplate>
                            <asp:LinkButton ID="lnkUserName" runat="server" 
                            Text='<%# Eval("UserName")%>' OnClick="lnkUserName_Click">
                            </asp:LinkButton>                            
                        </ItemTemplate>
                        </asp:TemplateField>                    
                        <asp:BoundField DataField="UserName" HeaderText="UserName" 
                            SortExpression="UserName" Visible="false" />
                        <asp:BoundField DataField="Extension" HeaderText="Extension" 
                            SortExpression="Extension" />
                        <asp:BoundField DataField="Email" HeaderText="E-mail" 
                            SortExpression="Email" />
                        <asp:BoundField DataField="Company" HeaderText="Company" 
                            SortExpression="Company" />
                        <asp:BoundField DataField="Department" HeaderText="Department" 
                            SortExpression="Department" />
                        <asp:BoundField DataField="Access Level" HeaderText="Access Level" 
                            SortExpression="Access Level" />
                    </Columns>
                </asp:GridView>
                <asp:SqlDataSource ID="SqlDSUsers" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:SPRConnectionString %>" 
                    SelectCommand="..."></asp:SqlDataSource>
            </td>
        </tr>
    </table>

<asp:ModalPopupExtender id="mpeAddUser" runat="server" 
    TargetControlID="btnAddUser" 
    PopupControlID="panelEditUser" 
    CancelControlID="btnCancel" 
    PopupDragHandleControlID="PopupHeader" 
    Drag="true" 
    DropShadow="true"  
    BackgroundCssClass="ModalPopupBG" >
</asp:ModalPopupExtender>

<asp:Button ID="btnEditUser" runat="server" style="display:none" />

<asp:ModalPopupExtender id="mpeEditUser" runat="server" 
    TargetControlID="btnEditUser" 
    PopupControlID="panelEditUser" 
    CancelControlID="btnCancel" 
    PopupDragHandleControlID="PopupHeader" 
    Drag="true" 
    DropShadow="true"  
    BackgroundCssClass="ModalPopupBG" >
</asp:ModalPopupExtender>

<asp:panel id="panelEditUser" style="display: none" runat="server">
<div id="ModalPopup">
<div id="PopupHeader">Add a New User</div>

     <table>
         <tr>
             <td>First Name</td>
             <td>
                 <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>

             </td>
         </tr>
         <tr>
             <td>Last Name</td>
             <td>
                 <asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>

             </td>
         </tr>
         <tr>
             <td>Extension</td>
             <td>
                 <asp:TextBox ID="txtExtension" runat="server"></asp:TextBox>

             </td>
         </tr>
         <tr>
             <td>E-mail</td>
             <td>
                 <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>

             </td>
         </tr>
         <tr>
             <td>Company</td>
             <td>
                 <asp:DropDownList ID="ddlCompany" runat="server" DataSourceID="SqlDSCompany" 
                     DataTextField="ProductVendorName" DataValueField="ProductVendorID" 
                     AppendDataBoundItems="True">
                 <asp:ListItem Value="" Text=""></asp:ListItem>
                 </asp:DropDownList>
                 <asp:SqlDataSource ...>
                 </asp:SqlDataSource>
             </td>
         </tr>
         <tr>
             <td>Department</td>
             <td>
                 <asp:DropDownList ID="ddlDepartment" runat="server" 
                     DataSourceID="SqlDSDepartment" DataTextField="DepartmentName" 
                     DataValueField="DepartmentID" AppendDataBoundItems="True">
                 <asp:ListItem Value="" Text=""></asp:ListItem>
                 </asp:DropDownList>

                 <asp:SqlDataSource ...>
                 </asp:SqlDataSource>
             </td>
         </tr>
         <tr>
             <td>Access Level</td>
             <td>
                 <asp:DropDownList ID="ddlAccessLevel" runat="server" 
                     DataSourceID="SqlDSAccessLevel" DataTextField="LevelID" 
                     DataValueField="LevelID" AppendDataBoundItems="True">
                 <asp:ListItem Value="" Text=""></asp:ListItem>
                 </asp:DropDownList>

                 <asp:SqlDataSource ...>
                 </asp:SqlDataSource>
             </td>
         </tr>
         <tr>
             <td>
                 &nbsp;</td>
             <td>
                 <asp:Button ID="btnEdit" runat="server" Text="Submit" 
                     onclick="btnEdit_Click" />
                 <asp:Button ID="btnReset" runat="server" Text="Reset" 
                     onclientclick="return resetUser();" />
                 <input id="btnCancel" type="button" value="Cancel" />
             </td>
         </tr>
     </table>
</div></asp:panel>

</div>
</asp:Content>

Вот код здесь в C #, каким-то образом событие click не было запущено всевремя.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text;

namespace SPR2_v1
{
    public partial class EditUsers : System.Web.UI.Page
    {
        ...
        protected void lnkUserName_Click(object sender, System.EventArgs e)
        {
            LinkButton lbUserName = sender as LinkButton;
            GridViewRow gvr = (GridViewRow)lbUserName.NamingContainer;

            txtFirstName.Text = "";
            txtLastName.Text = "";
            txtExtension.Text = gvr.Cells[2].Text;
            txtEmail.Text = gvr.Cells[3].Text;
            ddlCompany.SelectedItem.Text = gvr.Cells[4].Text;
            ddlDepartment.SelectedItem.Text = gvr.Cells[5].Text;
            ddlAccessLevel.SelectedItem.Text = gvr.Cells[6].Text;

            btnEdit.Text = "Update User";
            mpeEditUser.Show();
        }

        protected void btnAddUser_Click(object sender, EventArgs e)
        {
            btnEdit.Text = "Add User";

        }
    }
}

1 Ответ

1 голос
/ 28 сентября 2011

Слишком много кода для записи, но вам нужно связать каждый LinkButton с ModalPopupExtender во время GridView.RowDataBound.

Ваша настоящая проблема - получить доступ к данным строки для редактирования. Если это реальная цель, см. Пример ниже, и затем вы можете интегрировать ее с ModalPopupExtender.

Примеры GridView для ASP.NET 2.0: редактирование базовых данных в GridView

Я рекомендую вам использовать ListView, с шаблонами (EditItemTemplate ... и т. Д.) Работать намного проще.

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