日期:2014-05-16  浏览次数:20401 次

ExtJs之GridPanel、FormPanel实例推荐 (转)

转自:http://blog.csdn.net/jianxin160/archive/2010/11/16/6013217.aspx

?

?

今天我们一块看一下GridPanel和FormPanel的另外一些知识。在这一篇文章中我觉得更多的是FromPanel的应用,虽然前面我们单独说了FromPanel布局及其相关控件,但是关于FromPanel的提交和加载一直没有说。在这一篇文章中我们着重说一下FromPanel的加载与提交,以及如何将FormPanel与TabPanel结合起来等。例子要实现的功能:显示商品信息并且支持分页和搜索;单击某商品弹出相关信息(包括供货商和种类信息);在弹出窗口中可以自动加载相关信息并且可以修改提交。

温故而知新

由于这一篇文章是结合了几种控件来阐述的,GridPanel部分是在上一篇"ExtJs之GridPanel篇"之上进行修改的,除了添加其双击事件等代码外其他的几乎完全一样。但是作为一个完整的例子我觉得还是把代码放出了,不明白的朋友可以参考上一篇关于GridPanel的文章。下面是例子中GridPanel功能的后台代码,前台代码我们放在下面和FromPanel一块说:

?

using System;  
using System.Collections;  
using System.Configuration;  
using System.Data;  
using System.Linq;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.HtmlControls;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Xml.Linq;  
using System.Web.Script.Serialization;  
using System.Collections.Generic;  
using System.Text;  
using Cmj.MyData;  
namespace GridPanel  
{  
    public partial class _Default : System.Web.UI.Page  
    {  
        DBHelper dbHelper = new DBHelper();  
        int count;  
        protected void Page_Load(object sender, EventArgs e)  
        {  
            int pageSize=10;  
            int start=0;  
            Session["categoryID"] = "";  
            Session["productName"] = "";  
            if (!string.IsNullOrEmpty(Request["limit"]))  
            {  
                pageSize = int.Parse(Request["limit"]);  
            }  
            if (!string.IsNullOrEmpty(Request["start"]))  
            {  
                start = int.Parse(Request["start"]);  
            }  
            if (start==0 && Request["categoryName"] != null && Request["productName"]!=null)//说明是查询而不是翻页  
            {  
                Session["categoryID"] = Request["categoryName"];  
                Session["productName"] = Request["productName"];  
            }  
            count = GetCount(Session["categoryID"].ToString(), Session["productName"].ToString());  
            Response.Write(GetJson(GetDataTabel(GetSql(Session["categoryID"].ToString(), Session["productName"].ToString()), pageSize, start), Session["categoryID"].ToString(), Session["productName"].ToString()));  
            Response.End();  
        }  
        private string GetSql(string categoryID,string productName)  
        {  
            string sql = "SELECT dbo.Products.ProductID, dbo.Products.ProductName,dbo.Categories.CategoryName,dbo.Products.UnitPrice,dbo.Products.Discontinued,dbo.Products.QuantityPerUnit,dbo.Suppliers.CompanyName FROM dbo.Products INNER JOIN dbo.Categories ON dbo.Products.CategoryID = dbo.Categories.CategoryID" +  
                " INNER  JOIN dbo.Suppliers ON dbo.Suppliers.SupplierID=dbo.Products.SupplierID ";  
            if (categoryID != "all")  
            {  
                sql += "WHERE dbo.Categories.CategoryID='" + categoryID + "'";  
            }  
            if(productName!=string.Empty)  
            {  
                sql+= " AND dbo.Products.ProductName like '%" + productName + "%'";  
            }  
            return sql;  
        }  
        private int GetCount(string categoryID,string productName)  
        {  
            string