asp.net gridview打开模态表单后嵌套问题折叠项

您所在的位置:网站首页 layouttemplate asp.net gridview打开模态表单后嵌套问题折叠项

asp.net gridview打开模态表单后嵌套问题折叠项

#asp.net gridview打开模态表单后嵌套问题折叠项 | 来源: 网络整理| 查看: 265

好吧,我只是建议/声明引导对话框是超越痛苦,他们只是。所以,你不仅要弹出一个对话框,而且你需要一个可以在回发后继续存在的对话框。在“大多数”情况下,任何回发都会使对话框崩溃。但是,(希望如此)您已经安装了jQuery。因此,采用jQuery.UI库。2这些对话框可能看起来有点“老”的风格(你可以用一些爱心和关心来修复它),但是这些对话框只是工作,它们很棒,它们可以放在一个更新面板中,它们可以在一个更新面板中生存和运行。不仅如此,jQuery.UI对话框“很有意义”你知道,你把一个按钮放到一个窗体上,有一些点击事件调用一些代码弹出一个对话框,它显示出来了。所有漂亮的简单代码。与那些引导对话框形成对比。你构建一个复杂的div,添加一大堆类,然后在代码中的一些地方,一些方式,一些地方,这些东西应该神奇地弹出?因此,不仅引导对话框很难设置,他们是一个超越恐怖的夜猫子支持,并延长。接下来:我不建议尝试嵌套两个网格视图,但建议最上面的一个是列表视图。事实证明,“当”你的gv开始变得复杂时,它们就会变得相当混乱。(你现在已经拥有了,所以这只是一个很好的参考)。好的,让我们来设置一个例子,比如说在一个网格视图上的一些行(我将使用一个列表视图)。在列表视图的一边,我们有一个按钮来展开,它展开了一个网格视图。没真实的特别的。但是,这样说:

View HotelName City Province Description

和要加载的代码,如下所示:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then LoadGrid() End If End Sub Sub LoadGrid() Dim strSQL As String = "SELECT * FROM tblHotelsA ORDER BY HotelName" ListView1.DataSource = MyRst(strSQL) ListView1.DataBind() End Sub

我们现在看到/有这个:

因此,上面的代码使用了一个弹出窗口(Jquery.ui)。您注意到它可以/确实存在回发。一个jquery.UI对话框简单要求你需要一个“div”,里面有任何东西。我们把上面的一团乱,塞进一个div,然后弹出那个怎么样!!!所以,我们现在有了这个:

所以,我们有回发,现在我们嵌套两个对话框深!!!那么,如何设置弹出窗口。最基本的格式是这样的:首先,我们有一个“+”按钮来展开一个listview行(child是gv)。密码是这样的:

Protected Sub cmdView_Click(sender As Object, e As EventArgs) Dim cmd As Button = sender Dim gVR As ListViewDataItem = cmd.Parent ' get current row Dim gChild As GridView = gVR.FindControl("GridView2") ' pluck grid for this row Dim MyDiv As HtmlTableCell = gVR.FindControl("mygridview") If MyDiv.Style("display") = "normal" Then ' if grid is already display, then hide it, and exit MyDiv.Style("display") = "none" Exit Sub End If MyDiv.Style("display") = "normal" Dim HotelPK As String = ListView1.DataKeys(gVR.DataItemIndex).Item("ID") ' only re-load if never loaded If gChild.Rows.Count = 0 Then Dim strSQL As String strSQL = "SELECT * from People where hotel_id = " & HotelPK gChild.DataSource = MyRst(strSQL) gChild.DataBind() End If End Sub

代码不要太多.注意非常接近用户的容器命名技巧.这就显示了嵌套的gv。在嵌套的gv中,我单击了一个编辑按钮,这是我们使用jQuery.UI对话框的第一个示例。gv按钮是这样的:

(我省略了大部分的标记)。那么,当我们点击gv行中的那个按钮时呢?我们获取行信息。将行信息放入一个“handy div”打开潜水器。因此,按钮代码如下所示:

Protected Sub cmdEdit_Click(sender As Object, e As EventArgs) ' nested grid edit button. Dim cmdEdit As ImageButton = sender Dim gRow As GridViewRow = cmdEdit.NamingContainer Dim GV As GridView = gRow.NamingContainer Dim PkID As Integer = GV.DataKeys(gRow.RowIndex).Item("ID") Dim strSQL As String = "SELECT * from People WHERE ID = " & PkID Dim rstData As DataTable = MyRst(strSQL) ' load up our edit div With rstData.Rows(0) txtFirstname.Text = .Item("FirstName").ToString txtLastname.Text = .Item("LastName").ToString txtCity.Text = .Item("City").ToString If IsDBNull(.Item("Active")) Then Active.Checked = False Else Active.Checked = .Item("Active") End If txtNotes.Text = .Item("Notes").ToString End With Session("RowPK") = PkID ' save current list view row Dim LV As ListViewItem = GV.NamingContainer Session("LvRow") = LV.DataItemIndex ScriptManager.RegisterStartupScript(Me.UpdatePanel1, Me.UpdatePanel1.GetType, "MyPop", "MyEdit()", True) End Sub

再说一次,大部分代码都是“普通简”没什么好打电话给妈妈的。然而,最后一行呢?我们想要弹出div,因此在加载div之后,我们将弹出它。这个div被放置在所有列表视图/网格视图标记的下面。又来了,简·马克普。这:

First Name :

Last Name :

City :

Active :

Notes : function MyEdit() { var myDialog = $("#myedit"); myDialog.dialog({ title: "Edit Hotel Information", modal: true, width: "280px", resizable: false, appendTo: "form", autoOpen: false }); myDialog.dialog('open'); }

所以,是的,有一点js代码。但是,注意我们这里没有一船“可怕”的bs类。只有一个简单的div,和一些可读的js代码来弹出jQuery. ui。所以,如果你需要/想要/将要/喜欢一个弹出对话框,一个可以“承受”回发的对话框(记住,更新面板不会阻止回发,它只会隐藏并让它看起来像回发没有发生,但它们确实会回发,甚至每次都会触发页面加载事件)。所以,弹出一个对话框,但带有一个更新面板(这样它就不会与工作代码和回发的按钮重叠?)然后将代码 Package 在更新面板中,并确保所讨论的“div” Package 了更新面板。就像这样

' you stuff you want to pop here

所以,请注意这个模式:

Your div to pop the update panel stuff inside end update end div

因此,对于第二个演示,我只是创建了一个div,它围绕列表视图 Package 了整个div。所以,然后我只是创造了一个按钮,弹出整个她爆炸。按钮代码是这样的:

.etc. etc. etc.

这个按钮的js代码是这样的:

function MyEditAll() { var myDialog2 = $("#Everything"); myDialog2.dialog({ title: "Bookings editor", modal: true, width: "60%", resizable: false, autoOpen: false, appendTo: "form", buttons: { AllDone: function () { myDialog2.dialog('close') } } }); myDialog2.dialog('open'); }

因此,再次注意jQuery.UI对话框是如何简单地要求您为它提供一个“div”的。把你的up的panel +内容放在那个div里面(比如你的gv例子),它不仅应该弹出的很漂亮,而且还允许回发,而且不会折叠)。这个帖子已经太长了。我通常把js代码放在up面板区域的内部-在底部。我没有太多的时间来测试你是否可以把代码放在UP之外-你可能可以。所以,上面有一大堆非常棒的想法。注意对于列表视图和网格视图,我是如何使用命名容器技巧的。我确实使用了这个helper例程来保存代码和世界贫困:

Public Function MyRst(strSQL As String) As DataTable Dim rstData As New DataTable Using conn As New SqlConnection(My.Settings.TEST4) Using cmdSQL As New SqlCommand(strSQL, conn) conn.Open() rstData.Load(cmdSQL.ExecuteReader) rstData.TableName = strSQL End Using End Using Return rstData End Function

另外一个真实的的部分是确保该页面中的代码可以使用jQuery、jQuery.UI。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3