Здравствуйте, Koss87, Вы писали:
K>выложи полностью всю страницу аспх и цс, а также яваскрипты..
Во-первых хотел выразить тебе блогадарность за помощь
Я попытался присвоить event "onclick" в функции buildNodeContent так чтоб при нажатии на элементы меню(На "add child", на "update version", на "history") сработал alert,
но alert срабатывает только когда я нажимаю на Actions. Как же мне сделать?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Copy of Copy of CNV.aspx.cs" Inherits="CNV" %>
<%@ Import Namespace="System.Web.Services" %>
<%@ Register Assembly="System.Web.Extensions" Namespace="System.Web.UI" TagPrefix="asp" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<link href="css/ModalDialogs.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Table ID="Table1" runat="server" CellPadding="0" CellSpacing="0" style="vertical-align: top">
</asp:Table>
<asp:Panel ID="pnlNewElement" runat="server" CssClass="modalPopup" Width="300px" Height="230px" style="display:none; overflow:auto;" >
<table>
<tr>
<td>
</td>
<td>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
<td>
<asp:Label ID="lblElementName" runat="server" Text="name"></asp:Label></td>
</tr>
<tr>
<td>
</td>
<td>
<asp:DropDownList ID="ddlElementKind" runat="server" DataSourceID="SQLdsElementKind"
DataTextField="sName" DataValueField="Id">
</asp:DropDownList>
</td>
<td>
<asp:Label ID="txtElementKind" runat="server" Text="kind"></asp:Label></td>
</tr>
<tr>
<td>
</td>
<td>
<asp:TextBox ID="txtDescription" runat="server"></asp:TextBox></td>
<td>
<asp:Label ID="lblDescription" runat="server" Text="desciption"></asp:Label></td>
</tr>
</table>
<asp:Button ID="btnCancel" runat="server" Text="cancel" />
<asp:SqlDataSource ID="SQLdsElementKind" runat="server" ConnectionString="<%$ ConnectionStrings:esek %>"
SelectCommand="SELECT [Id], [sName] FROM [vElementKind]"></asp:SqlDataSource>
</asp:Panel>
<asp:Button ID="btnHiddenShowNewElement" runat="server" Text="Button" />
<asp:HiddenField ID="hfShowNewElement" runat="server" />
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="btnHiddenShowNewElement" PopupControlID="pnlNewElement" BackgroundCssClass="modalBackground" DropShadow="true" CancelControlID="btnCancel" >
</ajaxToolkit:ModalPopupExtender>
</div>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class CNV : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
BuildTree();
}
void BuildTree()
{
DataTable dtTree;
DataView dvTree;
ArrayList alNode;
ConfigurationTree _ConfigurationTree;
Table1.Controls.Clear();
_ConfigurationTree = new ConfigurationTree(Table1);
if ((dtTree = _ConfigurationTree.GetTree(Request["ProjId"])) == null)
{
showError(_ConfigurationTree.ErrorDescription);
return;
}
if (dtTree.Rows.Count > 0)
{
dvTree = new DataView(dtTree);
//Get records with TreeLevel = i
dvTree.RowFilter = "nTLevel=1";
alNode = buildNodeContent((string)dvTree[0].Row["ElementName"], (string)dvTree[0].Row["ElementVersionName"]);
//Add Label
_ConfigurationTree.BaseNode.AddControl((Label)alNode[0]);
//Add Menu
_ConfigurationTree.BaseNode.AddControl((Menu)alNode[1]);
_ConfigurationTree.BaseNode.AddToStyle("background-color", "blue");
_ConfigurationTree.BaseNode.AddToStyle("text-align", "center");
buildNode(dtTree, _ConfigurationTree.BaseNode, dvTree[0].Row["ElementId"].ToString());
}
}
/// <summary>
/// Build node recursively
/// </summary>
/// <param name="dtTree"></param>
/// <param name="Node"></param>
/// <param name="strFatherElementId"></param>
void buildNode(DataTable dtTree, TreeDiagramNode Node, string strFatherElementId)
{
ArrayList alNode;
TreeDiagramNode subNode;
DataView dvTree = new DataView(dtTree);
//Filter all element that belong to FatherElementId
dvTree.RowFilter = "uFatherElement='" + strFatherElementId + "'";
for (int i = 0; i < dvTree.Count; i++)
{
alNode = buildNodeContent((string)dvTree[i].Row["ElementName"], (string)dvTree[i].Row["ElementVersionName"]);
subNode = Node.CreateChildNode();
subNode.AddControl((Label)alNode[0]);
subNode.AddControl((Menu)alNode[1]);
subNode.AddToStyle("background-color", "blue");
subNode.AddToStyle("text-align", "center");
buildNode(dtTree, subNode, dvTree[i].Row["ElementId"].ToString());
}
}
ArrayList buildNodeContent(string ElementName, string strVersion)
{
Label _Label = new Label();
Menu _Menu;
MenuItem _MenuItem;
ArrayList alNode;
_Label.Font.Bold = true;
_Label.Font.Name = "Malgun Gothic";
_Label.ForeColor = System.Drawing.Color.Black;
_Label.Text = ElementName + " " + strVersion;
_Menu = new Menu();
_Menu.BackColor = System.Drawing.Color.LightSteelBlue;
_Menu.DynamicHorizontalOffset = 2;
_Menu.Font.Name = "Verdana";
_Menu.Font.Size = 10;
_Menu.ForeColor = System.Drawing.Color.Teal;
_Menu.StaticSubMenuIndent = new Unit(10, UnitType.Pixel);
_Menu.Style.Add("direction", "rtl");
_Menu.Style.Add("text-align", "right");
_Menu.StaticSelectedStyle.BackColor = System.Drawing.Color.LightSteelBlue;
_Menu.StaticMenuItemStyle.HorizontalPadding = new Unit(5, UnitType.Pixel);
_Menu.StaticMenuItemStyle.VerticalPadding = new Unit(2, UnitType.Pixel);
_Menu.DynamicHoverStyle.BackColor = System.Drawing.Color.LightSteelBlue;
_Menu.DynamicHoverStyle.ForeColor = System.Drawing.Color.White;
_Menu.DynamicMenuStyle.BackColor = System.Drawing.Color.LightSteelBlue;
_Menu.DynamicSelectedStyle.BackColor = System.Drawing.Color.LightSteelBlue;
_Menu.DynamicMenuItemStyle.HorizontalPadding = new Unit(5, UnitType.Pixel);
_Menu.StaticHoverStyle.BackColor = System.Drawing.Color.LightSteelBlue;
_Menu.StaticHoverStyle.ForeColor = System.Drawing.Color.White;
_Menu.Attributes["onclick"] = "alert(1); return false;";
_MenuItem = new MenuItem("actions", "actions");
_Menu.Items.Add(_MenuItem);
_MenuItem.ChildItems.Add(new MenuItem("history", "history"));
_MenuItem.ChildItems.Add(new MenuItem("update version", "version"));
_MenuItem.ChildItems.Add(new MenuItem("add child", "child"));
alNode = new ArrayList();
alNode.Add(_Label);
alNode.Add(_Menu);
return alNode;
}
/// <summary>
/// Alert if any error occurred
/// </summary>
/// <param name="strMessage"></param>
void showError(string strMessage)
{
//When the message contains characters like apostrophe or newline and etc. the javascipt error is occurred
//Therefore store this message in hiddenfiled(added firstly to form) and alert from it
HiddenField hfError = new HiddenField();
hfError.Value = strMessage;
hfError.ID = "hfError";
Form.Controls.Add(hfError);
this.ClientScript.RegisterStartupScript(this.GetType(), "Error", "alert(document.getElementById('" + hfError.UniqueID + "').value);", true);
}
}
df