2017-01-25 2 views
0

Как из названия, я хотел бы сделать всплывающее окно при щелчке кнопки ItemTemplate в GridView (1).(ASP.NET) Как это сделать: нажмите кнопку в GridView, чтобы открыть всплывающее окно, содержащее другое Gridview

Всплывающее окно будет содержать еще один GridView (2), и этот содержит информацию (полученную из базы данных), эта информация такая же, как GridView (1), и мне нужны только данные из индекса строки Кнопка.

Это код, который у меня есть. JavaScript:

<script type="text/javascript"> 
 
    $(function() { 
 
    $("[id*=btnShowPopup]").click(function() { 
 
     ShowPopup(); 
 
     return false; 
 
    }); 
 
    }); 
 

 
    function ShowPopup() { 
 
    $("#dialog").dialog({ 
 
     title: "GridView", 
 
     width: 450, 
 
     buttons: { 
 
     Ok: function() { 
 
      $(this).dialog('close'); 
 
     } 
 
     }, 
 
     modal: true 
 
    }); 
 
    } 
 
</script>

GridView (2) дизайн:

<div id="dialog" style="display: none">> 
 
    <asp:GridView ID="gridviewpopup" runat="server" AutoGenerateColumns="false"> 
 
    <Columns> 
 
     <asp:ImageField DataImageUrlField="companyLogo" HeaderText="Company Logo" ControlStyleWidth="170" ControlStyle-Height="120" /> 
 
     <asp:BoundField DataField="companyName" HeaderText="Company Name" /> 
 
     <asp:BoundField DataField="companyInfo1" HeaderText="Background Information" /> 
 
    </Columns> 
 
    </asp:GridView> 
 
</div>

aspx.cs кодов файлов:

protected void Page_Load(object sender, EventArgs e) 
 
    { 
 
     if (!this.IsPostBack) 
 

 
     { 
 
      this.BindGrid(); 
 
     } 
 
    } 
 

 
private void BindGrid() 
 

 
    { 
 
     string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
 
     using (SqlConnection con = new SqlConnection(constr)) 
 
     { 
 
      using (SqlCommand cmd = new SqlCommand("SELECT * FROM companyList WHERE companyIndID ='" + Convert.ToString(ddlIndustry.SelectedValue) + "' AND companySectID='" + Convert.ToString(ddlSector.SelectedValue) + "'")) 
 
      { 
 
       using (SqlDataAdapter sda = new SqlDataAdapter()) 
 
       { 
 
        cmd.Connection = con; 
 
        sda.SelectCommand = cmd; 
 

 
        using (DataTable dt = new DataTable()) 
 
        { 
 
         sda.Fill(dt); 
 
         gridviewpopup.DataSource = dt; 
 
         gridviewpopup.DataBind(); 
 

 
        } 
 

 
       } 
 

 
      } 
 

 
     } 
 

 
    } 
 

 
protected void OnPageIndexChanging(object sender, GridViewPageEventArgs e) 
 

 
    { 
 

 
     gridviewpopup.PageIndex = e.NewPageIndex; 
 
     this.BindGrid(); 
 
     ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup();", true); 
 

 
    }

Вышеуказанные коды, которые я не работаю, и я не могу показаться, чтобы найти проблему с ним, или я, возможно, забыл что-то. Если вам интересно, какая часть, новое окно не всплывает. Спасибо.

+0

Вам понадобится 'updatepanel' для хранения' GridView'. Затем нажмите кнопку «ОК», откройте всплывающее окно и обновите GridView с обновлением обновленной панели. – Hemal

ответ

1

1) Вы можете поместить кнопку гиперссылки в Gridview и указать путь для второго Gridview. Вы также можете перейти по этой ссылке. Open new gridview through Hyperlink И сделайте для этого класс подключения. 2) Сделайте Gridview на одной странице aspx. И сделайте еще один Gridview на другой странице. Response.Redirect ("~/secondGridviewpageYouwantTocall.aspx"); Вы можете использовать это для перенаправления

0

Спасибо за ответы, я не смог выполнить именно то, что хотел, но вместо того, чтобы всплывать, я использовал отправителя Button и GridViewRow для получения данных индекса строки и вставил с использованием DataBind в другой GridView и завершение метода с помощью Visible = true, все равно не будут возражать против более качественных ответов на него.

Смежные вопросы