最近在用 Devexpress 的控件,很强大,但是很多东西都需要研究
其中 ASPxTreeList的部分,更新新增都是用的模板列,研究了一下,相关代码如下,需要用这个控件做 增删改的朋友可以参考下,加粗关键代码
<EditForm>
<table>
<tr>
<td style="width: 22px; height: 23px">
</td>
<td style="width: 103px; height: 23px;">
<asp:Label ID="lblName" runat="server" Text="名称"></asp:Label>
</td>
<td style="height: 23px">
<asp:TextBox ID="txtName" runat="server" Width="295px" Text='<%# Eval("menu_name") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td style="width: 22px">
</td>
<td style="width: 103px">
<asp:Label ID="lb_code" runat="server" Text="标识码"></asp:Label>
</td>
<td>
<asp:TextBox ID="tb_Tcode" runat="server" Width="295px" Text='<%# Eval("t_code") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td style="width: 22px; height: 11px">
</td>
<td style="width: 103px; height: 11px;">
<asp:Label ID="lblLink" runat="server" Text="链接"></asp:Label>
</td>
<td style="font-size: 1pt; height: 11px">
<asp:TextBox ID="txtAddr" runat="server" Width="295px" Text='<%# Eval("url") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td style="width: 22px; height: 23px">
</td>
<td style="width: 103px; height: 23px">
<asp:Label ID="lblDesc" runat="server" Text="描述"></asp:Label>
</td>
<td style="height: 23px">
<asp:TextBox ID="txtDesc" runat="server" Width="295px" Text='<%# Eval("remark") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td style="width: 22px; height: 16px">
</td>
<td style="width: 103px; height: 16px">
<asp:Label ID="lblOrder" runat="server" Text="顺序"></asp:Label>
</td>
<td style="height: 16px">
<dx:ASPxComboBox ID="xddl_Order" runat="server" ValueType="System.String"
SelectedIndex='<%# Eval("sort")==null?0:int.Parse(Eval("sort").ToString())-1 %>'
DropDownRows="15">
<Items>
<dx:ListEditItem Text="1" Value="1" />
<dx:ListEditItem Text="2" Value="2" />
<dx:ListEditItem Text="3" Value="3" />
<dx:ListEditItem Text="4" Value="4" />
<dx:ListEditItem Text="5" Value="5" />
<dx:ListEditItem Text="6" Value="6" />
<dx:ListEditItem Text="7" Value="7" />
<dx:ListEditItem Text="8" Value="8" />
<dx:ListEditItem Text="9" Value="9" />
<dx:ListEditItem Text="10" Value="10" />
<dx:ListEditItem Text="11" Value="11" />
</Items>
</dx:ASPxComboBox>
</td>
</tr>
</table>
<div style="text-align: right; padding-top: 8px">
<dx:ASPxTreeListTemplateReplacement ID="ASPxTreeListTemplateReplacement1" runat="server"
ReplacementType="UpdateButton" />
<dx:ASPxTreeListTemplateReplacement ID="ASPxTreeListTemplateReplacement2" runat="server"
ReplacementType="CancelButton" />
</div>
<tr>
<td style="width: 22px; height: 23px">
</td>
<td style="width: 103px; height: 23px;">
<asp:Label ID="lblName" runat="server" Text="名称"></asp:Label>
</td>
<td style="height: 23px">
<asp:TextBox ID="txtName" runat="server" Width="295px" Text='<%# Eval("menu_name") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td style="width: 22px">
</td>
<td style="width: 103px">
<asp:Label ID="lb_code" runat="server" Text="标识码"></asp:Label>
</td>
<td>
<asp:TextBox ID="tb_Tcode" runat="server" Width="295px" Text='<%# Eval("t_code") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td style="width: 22px; height: 11px">
</td>
<td style="width: 103px; height: 11px;">
<asp:Label ID="lblLink" runat="server" Text="链接"></asp:Label>
</td>
<td style="font-size: 1pt; height: 11px">
<asp:TextBox ID="txtAddr" runat="server" Width="295px" Text='<%# Eval("url") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td style="width: 22px; height: 23px">
</td>
<td style="width: 103px; height: 23px">
<asp:Label ID="lblDesc" runat="server" Text="描述"></asp:Label>
</td>
<td style="height: 23px">
<asp:TextBox ID="txtDesc" runat="server" Width="295px" Text='<%# Eval("remark") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td style="width: 22px; height: 16px">
</td>
<td style="width: 103px; height: 16px">
<asp:Label ID="lblOrder" runat="server" Text="顺序"></asp:Label>
</td>
<td style="height: 16px">
<dx:ASPxComboBox ID="xddl_Order" runat="server" ValueType="System.String"
SelectedIndex='<%# Eval("sort")==null?0:int.Parse(Eval("sort").ToString())-1 %>'
DropDownRows="15">
<Items>
<dx:ListEditItem Text="1" Value="1" />
<dx:ListEditItem Text="2" Value="2" />
<dx:ListEditItem Text="3" Value="3" />
<dx:ListEditItem Text="4" Value="4" />
<dx:ListEditItem Text="5" Value="5" />
<dx:ListEditItem Text="6" Value="6" />
<dx:ListEditItem Text="7" Value="7" />
<dx:ListEditItem Text="8" Value="8" />
<dx:ListEditItem Text="9" Value="9" />
<dx:ListEditItem Text="10" Value="10" />
<dx:ListEditItem Text="11" Value="11" />
</Items>
</dx:ASPxComboBox>
</td>
</tr>
</table>
<div style="text-align: right; padding-top: 8px">
<dx:ASPxTreeListTemplateReplacement ID="ASPxTreeListTemplateReplacement1" runat="server"
ReplacementType="UpdateButton" />
<dx:ASPxTreeListTemplateReplacement ID="ASPxTreeListTemplateReplacement2" runat="server"
ReplacementType="CancelButton" />
</div>
</EditForm>
public partial class SysFrame_FrameLeftMenu : FramePage
{
protected void Page_Load(object sender, EventArgs e)
{
PageBind();
if (!IsPostBack)
{
xTree_Menu.ExpandToLevel(1);
}
}
private void PageBind()
{
try
{
DataTable dt = null;
using (AuthClient client = WCF.AuthProxy)
{
dt = client.NavTreeSelect(GlobalDefinition.System_Name(), Guid.Empty).Tables[0];
}
xTree_Menu.DataSource = dt;
xTree_Menu.DataBind();
}
catch (Exception ex)
{
MessageBox.Show("错误\\r\\n" + ex.Message);
}
}
/// <summary>
/// 调用服务删除节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void bt_del_Click(object sender, EventArgs e)
{
try
{
using (AuthClient client = WCF.AuthProxy)
{
foreach (TreeListNode node in xTree_Menu.GetSelectedNodes())
{
NavTreeData d = new NavTreeData();
d.menu_id = new Guid(node["menu_id"].ToString());
client.NavTreeUID(EditActionType.Delete, d);
}
}
PageBind();
}
catch (Exception ex)
{
MessageBox.Show("错误\\r\\n" + ex.Message);
}
}
/// <summary>
/// 新增节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void xTree_Menu_NodeInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
try
{
NavTreeData o = ActionNode();
if (e.NewValues.Count==0)
o.p_menu = Guid.Empty;
else
o.p_menu = new Guid(e.NewValues["p_menu"].ToString());
o.menu_id = Guid.NewGuid();
o.cdate = DateTime.Now;
o.cuser = GlobalDefinition.LoginUserModel.user_id;
using (AuthClient client = WCF.AuthProxy)
{
client.NavTreeUID(EditActionType.New, o);
}
e.Cancel = true;
xTree_Menu.CancelEdit();
PageBind();
}
catch (Exception ex)
{
MessageBox.Show("错误\\r\\n" + ex.Message);
}
}
private NavTreeData ActionNode()
{
NavTreeData o = new NavTreeData();
o.active = 1;
o.corp_code = GlobalDefinition.System_Name();
o.menu_name = (xTree_Menu.FindEditFormTemplateControl("txtName") as TextBox).Text.Trim();
o.remark = (xTree_Menu.FindEditFormTemplateControl("txtDesc") as TextBox).Text.Trim();
o.sort = int.Parse((xTree_Menu.FindEditFormTemplateControl("xddl_Order") as ASPxComboBox).SelectedItem.Text);
o.t_code = (xTree_Menu.FindEditFormTemplateControl("tb_Tcode") as TextBox).Text.Trim();
o.url = (xTree_Menu.FindEditFormTemplateControl("txtAddr") as TextBox).Text.Trim();
return o;
}
/// <summary>
/// 更新节点信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void xTree_Menu_NodeUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
try
{
NavTreeData o = ActionNode();
o.menu_id = new Guid(e.Keys[0].ToString());
o.p_menu = new Guid(CurrentEditNode["p_menu"].ToString());
o.mdate = DateTime.Now;
o.muser = GlobalDefinition.LoginUserModel.user_id;
using (AuthClient client = WCF.AuthProxy)
{
client.NavTreeUID(EditActionType.Update, o);
}
e.Cancel = true;
xTree_Menu.CancelEdit();
PageBind();
}
catch (Exception ex)
{
MessageBox.Show("错误\\r\\n" + ex.Message);
}
}
/// <summary>
/// 获取正出于编辑状态的节点
/// </summary>
private TreeListNode CurrentEditNode
{
get
{
return xTree_Menu.FindNodeByKeyValue(xTree_Menu.EditingNodeKey);
}
}
}
{
protected void Page_Load(object sender, EventArgs e)
{
PageBind();
if (!IsPostBack)
{
xTree_Menu.ExpandToLevel(1);
}
}
private void PageBind()
{
try
{
DataTable dt = null;
using (AuthClient client = WCF.AuthProxy)
{
dt = client.NavTreeSelect(GlobalDefinition.System_Name(), Guid.Empty).Tables[0];
}
xTree_Menu.DataSource = dt;
xTree_Menu.DataBind();
}
catch (Exception ex)
{
MessageBox.Show("错误\\r\\n" + ex.Message);
}
}
/// <summary>
/// 调用服务删除节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void bt_del_Click(object sender, EventArgs e)
{
try
{
using (AuthClient client = WCF.AuthProxy)
{
foreach (TreeListNode node in xTree_Menu.GetSelectedNodes())
{
NavTreeData d = new NavTreeData();
d.menu_id = new Guid(node["menu_id"].ToString());
client.NavTreeUID(EditActionType.Delete, d);
}
}
PageBind();
}
catch (Exception ex)
{
MessageBox.Show("错误\\r\\n" + ex.Message);
}
}
/// <summary>
/// 新增节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void xTree_Menu_NodeInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
try
{
NavTreeData o = ActionNode();
if (e.NewValues.Count==0)
o.p_menu = Guid.Empty;
else
o.p_menu = new Guid(e.NewValues["p_menu"].ToString());
o.menu_id = Guid.NewGuid();
o.cdate = DateTime.Now;
o.cuser = GlobalDefinition.LoginUserModel.user_id;
using (AuthClient client = WCF.AuthProxy)
{
client.NavTreeUID(EditActionType.New, o);
}
e.Cancel = true;
xTree_Menu.CancelEdit();
PageBind();
}
catch (Exception ex)
{
MessageBox.Show("错误\\r\\n" + ex.Message);
}
}
private NavTreeData ActionNode()
{
NavTreeData o = new NavTreeData();
o.active = 1;
o.corp_code = GlobalDefinition.System_Name();
o.menu_name = (xTree_Menu.FindEditFormTemplateControl("txtName") as TextBox).Text.Trim();
o.remark = (xTree_Menu.FindEditFormTemplateControl("txtDesc") as TextBox).Text.Trim();
o.sort = int.Parse((xTree_Menu.FindEditFormTemplateControl("xddl_Order") as ASPxComboBox).SelectedItem.Text);
o.t_code = (xTree_Menu.FindEditFormTemplateControl("tb_Tcode") as TextBox).Text.Trim();
o.url = (xTree_Menu.FindEditFormTemplateControl("txtAddr") as TextBox).Text.Trim();
return o;
}
/// <summary>
/// 更新节点信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void xTree_Menu_NodeUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
try
{
NavTreeData o = ActionNode();
o.menu_id = new Guid(e.Keys[0].ToString());
o.p_menu = new Guid(CurrentEditNode["p_menu"].ToString());
o.mdate = DateTime.Now;
o.muser = GlobalDefinition.LoginUserModel.user_id;
using (AuthClient client = WCF.AuthProxy)
{
client.NavTreeUID(EditActionType.Update, o);
}
e.Cancel = true;
xTree_Menu.CancelEdit();
PageBind();
}
catch (Exception ex)
{
MessageBox.Show("错误\\r\\n" + ex.Message);
}
}
/// <summary>
/// 获取正出于编辑状态的节点
/// </summary>
private TreeListNode CurrentEditNode
{
get
{
return xTree_Menu.FindNodeByKeyValue(xTree_Menu.EditingNodeKey);
}
}
}