In diesem Artikel wird berichtet, dass Mitglieder bei der Entwicklung einer kleinen Modulfunktion Popup-Fenster verwenden mussten, um baumartige Kaskadeneinheitsauswahlen zu laden, und sich schließlich für die Verwendung des jQuery EasyUI-Plug-Ins für die Entwicklung entschieden haben. Bei der Verwendung des Baum-Plug-Ins in EasyUI sind jedoch große Probleme aufgetreten. Um die Anzeigegeschwindigkeit des Popup-Baums zu verbessern, verwenden wir das asynchrone Laden von Knotenwerten. Zuerst wird der Stammknoten geladen und dann werden die untergeordneten Knoten entsprechend dem angeklickten Knoten geladen.
Oftmals weichen die Ergebnisse von den Erwartungen ab. Nach der Erweiterung werden die untergeordneten Knoten dynamisch geladen, aber nach dem Verkleinern können die zuvor gefüllten Daten beim zweiten Erweitern nicht gelöscht werden , werden die untergeordneten Knoten erneut geladen, die Daten werden wiederholt angezeigt und es gibt keine Methode zum Löschen der untergeordneten Knoten. Nachdem wir verschiedene Möglichkeiten zur Lösung dieses Problems ausprobiert haben, können wir die Werte der untergeordneten Knoten nur in einer anderen Form laden und feststellen, ob sie bereits vorhanden sind.
Siehe Beispiele für zwei Methoden:
页面getTreeNode.ashx返回树节点JSON格式数据:
öffentliche Klasse getTreeNode: IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
DataTable dt = (DataTable)context.Session["viewmaintain"];
string parentId = string.Empty;
string resultStr = string.Empty;
String-Attribute = string.Empty;
string colName = string.Empty;
string sql = string.Empty;
string Casname = string.Empty;
bool colt = false;
string icon = "icon-profile";
if (!string.IsNullOrEmpty(context.Request.QueryString["pid"]))
{
parentId = context.Request.QueryString["pid"].ToString();
}
if ((!string.IsNullOrEmpty(context.Request.QueryString["coln"])) && (string.IsNullOrEmpty(context.Request.QueryString["casn"])))
{
colName = HttpUtility.UrlDecode(context.Request.QueryString["coln"].ToString());
if (dt != null)
{
bool pt = true;
while (pt)
{
for (int i = 0; i < dt.Rows.Count; i )
{
Casname = dt.Rows[i]["view_colname"].ToString();
if (dt.Rows[i]["view_colname"].ToString() == colName)
{
if (dt.Rows[i]["view_cas"].ToString() != null&&dt.Rows[i]["view_cas"].ToString() !="")
{
colName = dt.Rows[i]["view_cas"].ToString();
}
sonst
{
colt = true;
sql = dt.Rows[i]["view_sql"].ToString();
pt = false;
}
Pause;
}
}
}
}
}
if ((!string.IsNullOrEmpty(context.Request.QueryString["casn"])) && (!string.IsNullOrEmpty(context.Request.QueryString["coln"])))
{
string casnName = HttpUtility.UrlDecode(context.Request.QueryString["casn"].ToString());
colName = HttpUtility.UrlDecode(context.Request.QueryString["coln"].ToString());
if (dt != null)
{
for (int i = 0; i < dt.Rows.Count; i )
{
Casname = dt.Rows[i]["view_colname"].ToString();
if (dt.Rows[i]["view_cas"].ToString() == casnName && casnName != colName)
{
colt = true;
sql = dt.Rows[i]["view_sql"].ToString();
Pause;
}
}
}
}
versuche es
{
if (parentId != "" && colt == true)
{
//此处省略得到数据列表的代码
Liste
resultStr = "";
resultStr = "[";
if (ltree.Count > 0)
{
foreach (TreeInfo-Element in ltree)
{
attributes = "";
attributes = "{"cas":"" Casname;
attributes = "","val="" item._text ""}";
resultStr = "{";
resultStr = string.Format(""id": "{0}", "text": "{1}", "iconCls": "{2}", "attributes": {3}, "state": " geschlossen"", item._id, item._text, icon, attributes);
resultStr = "},";
}
resultStr = resultStr.Substring(0, resultStr.Length - 1);
}
resultStr = "]";
}
sonst
{
resultStr = "[]";
}
}
Catch (Ausnahme ex)
{
resultStr = "出错";
}
context.Response.Write(resultStr);
}
public bool IsReusable
{
bekommen
{
return false;
}
}
}
小弟在此献丑了, 不知道各位专家、同仁有没有遇到类似的问题,或者有其它更好的解决办法,欢迎在这交流.