急啊,请教一个Ajax刷新的问题!
我用了个 ajax.dll的组件
Web.Config里面的配置
<!--majicAjax-->
<configSections>
<section name="magicAjax" type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax"/>
</configSections>
<magicAjax tracing="false" scriptPath="~/js">
<pageStore/>
</magicAjax>
<appSettings>
<add key="ConnectionString" value="data source=192.168.1.110;initial catalog=jzcm;user id=jzcm;password=jzcm" />
<add key="SystemName" value="合同管理系统" />
<add key="AppVersion" value="V1.0" />
</appSettings>
<system.web>
<!-- 对ajax支持 -->
<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>
</httpHandlers>
然后在BLL层建立一ContractManage的类,里面定义了个方法
GetCCCTypeTree是得到一个Microsoft.Web.UI.WebControl 1.0的TreeView控件
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read)]
public TreeNode GetCCCTypeTree( )
{
DataSet ds = new DataSet();
ds = dalContManage.GetCCCTRoot();
string ctID = ds.Tables[0].Rows[0]["CT_ID"].ToString();
string ctName = ds.Tables[0].Rows[0]["CT_Name"].ToString();
TreeNode tnRoot = new TreeNode();
tnRoot.Expanded = true;
tnRoot.Text = ctName;
tnRoot.NavigateUrl = @"ContManaTree.aspx?ctID="+ds.Tables[0].Rows[0]["CT_ID"].ToString();
tnRoot.ImageUrl = "../images/TreeImg/root.gif";
tnRoot.Target = "mainFrame";
LoadNextTree( tnRoot, null, ctID );
return tnRoot;
}
/// <summary>
/// 递归得到下一级的所有合同类型节点
/// </summary>
/// <param name="tnParent">树节点控件</param>
/// <param name="TreeType">种类</param>
/// <param name="parentID">父节点</param>
/// <returns></returns>
public TreeNode LoadNextTree(TreeNode tnParent, string TreeType, string parentID)
{
DataSet dsChild;
if(null != TreeType)//根节点加载
{
dsChild = dalContManage.GetCCCTRoot();
}
else//子节点加载(用于递归调用时候)
{
dsChild = dalContManage.GetCCCTChild( parentID );
}
if(null == dsChild)//判断是否有子节点
{
return tnParent;
}
else
{
foreach(DataRow dr in dsChild.Tables[0].Rows)
{
TreeNode tnChild = new TreeNode();
tnChild.Text = dr["CT_Name"].ToString().Trim();
tnChild.Target = "mainFrame";
object oFlag = dalContManage.IfExCCCTChild( dr["CT_ID"].ToString().Trim() );
if( null != oFlag )
{
tnChild.ImageUrl = "../images/TreeImg/folder.gif";
tnChild.SelectedImageUrl = "../images/TreeImg/folderopen.gif";
}
else
{
tnChild.ImageUrl = "../images/TreeImg/file.gif";
}
//对于定位页面的设定
if(null != dr["CT_Name"])
{
tnChild.NavigateUrl = @"ContManaTree.aspx?ctID="+dr["CT_ID"].ToString();
}
tnParent.Nodes.Add(tnChild);
LoadNextTree(tnChild, null, dr["CT_ID"].ToString().Trim());
}
return tnParent;
}
}
里面有两个方法是DAL层的,但是应该不关事,是正确的
然后,我在web层里面调用
前台的javascript
<script language="javascript">
<!--
function tvCCCTypeResult()
{
ContractManage.GetCCCTypeTree(get_tree_Result_CallBack);
}
function get_tree_Result_CallBack(response)
{
if (response.value != null)
{
//debugger;
var tvTree = parent.leftFrame.document.getElementById("tvCCCType");
var tt = parent.leftFrame.document.getElementById("TextBox1");
var ds = response.value;
if(ds != null )
{
tvTree.Nodes.Add( "123","234");
tvTree.Nodes.Add( ds );
}
}
}
后台语句
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Ajax.Utility.RegisterTypeForAjax(typeof(BLL.ContractManage.ContractManage));
if ( !IsPostBack )
{
InitPage();
Button1.Attributes.Add("onclick","tvCCCTypeResult();");
}
但是不行,我用了个TextBox1来测试,javascript语句是对的!但是为什么tvTree.Nodes.Add就是刷新不了呢?
}