Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在C#谷歌组织结构图中只显示一项?_Javascript_C#_Asp.net - Fatal编程技术网

Javascript 如何在C#谷歌组织结构图中只显示一项?

Javascript 如何在C#谷歌组织结构图中只显示一项?,javascript,c#,asp.net,Javascript,C#,Asp.net,我使用谷歌组织结构图创建了以下图表,但我有一些问题。当我打开页面或刷新页面时,它会显示完整的图表,如下图所示。但我只希望显示在红场中的项目我如何才能做到这一点 我不想从列表中获取一些项目,但当我打开页面时,它会显示整个图表及其所有列表项目,相反,当它打开时,我只想显示5个项目,让用户展开其他项目。您明白吗 这是图表的图片,它看起来是什么样子,我希望它是什么样子 这是我的完整c代码: 命名空间组织结构图使用GoogleAPI.OrganizationChart { 公共静态类ConvertTo

我使用谷歌组织结构图创建了以下图表,但我有一些问题。当我打开页面或刷新页面时,它会显示完整的图表,如下图所示。但我只希望显示在红场中的项目我如何才能做到这一点


我不想从列表中获取一些项目,但当我打开页面时,它会显示整个图表及其所有列表项目,相反,当它打开时,我只想显示5个项目,让用户展开其他项目。您明白吗

这是图表的图片,它看起来是什么样子,我希望它是什么样子

这是我的完整c代码:

命名空间组织结构图使用GoogleAPI.OrganizationChart
{
公共静态类ConvertTo
{
/// 
///转换给定类型中的对象类型并处理DBNULL。
/// 
///键入要转换的类型
///价值观
///转换后的值,如果为DBNULL,则返回类型的默认值,即string=string.Empty,Int16=0
公共静态T CastIn(此对象值),其中T:IConvertible
{
if(value==DBNull.value)
if(typeof(T)=typeof(string))
{
return(T)Convert.ChangeType(string.Empty,typeof(T));
}
其他的
{
返回默认值(T);
}
if(typeof(T)=typeof(bool))
return(T)Convert.ChangeType(Convert.ToInt32(value),typeof(T));
return(T)Convert.ChangeType(value,typeof(T));
}
}
公共部分类OrganizationChartUserControl:UserControl
{
//获取要从中获取数据的列表名
string listName=“OrgChart\u Demo”;
int iRowCounter=0;
string sAllNewRows=string.Empty;
受保护的无效页面加载(对象发送方、事件参数e)
{
//从列表中(递归)获取数据
GetNode(string.Empty);
//生成客户端脚本并注册
GenerateClientScript(sAllNewRows);
}
私有void GenerateClientScript(字符串sAllNewRows)
{
字符串csName1=“OrgChartScript”;
类型csType=this.GetType();
ClientScriptManager cs=Page.ClientScript;
//检查启动脚本是否已注册。
如果(!cs.isstartupscript已注册(csType,csName1))
{
StringBuilder cstext=新建StringBuilder();
cstext.Append(“”);
cstext.Append(“”);
追加(“google.load('visualization','1',{packages:['orgchart']});”;
Append(“google.setOnLoadCallback(drawChart);”;
Append(“函数drawChart(){”);
追加(“var data=new google.visualization.DataTable();”;
追加(“data.addColumn('string','Name');”;
追加(“data.addColumn('string','Manager');”;
追加(“data.addColumn('string','ToolTip');”;
Append(“var rowArr=new Array();”;
cstext.Append(sAllNewRows);
追加(“data.addRows(rowArr);”;
Append(“var chart=new google.visualization.OrgChart(document.getElementById('chart_div'));”;
Append(“chart.draw(数据,{allowtml:true,allowCollapse:true});”;
cstext.Append(“}”);
cstext.Append(“”);
cs.RegisterClientScriptBlock(csType,csName1,cstext.ToString(),false);
}
}
私有void GetNode(字符串reportsTo)
{
SPListItemCollection itemCol=GetListItems(listName,reportsTo);
foreach(itemCol中的SPListItem项)
{
//创建新行
sAllNewRows+=createNewRow(项目);
//递归
GetNode(项[“名称”].ToString());
}
}
私有字符串createNewRow(SPListItem listItem)
{
//将列表项转换为字符串。
字符串sName=ConvertTo.CastIn(listItem[“Name”]);
string-sTitle=ConvertTo.CastIn(listItem[“Title”]);
字符串sMoreInfo=ConvertTo.CastIn(listItem[“MoreInfo”]);
字符串sReportsTo=ConvertTo.CastIn(listItem[“ReportsTo”]);
//检查图像字段ref是否为空或null(如果它不提供任何img源链接!)
ImageFieldValue pageImage=listItem[“pageImage”]作为ImageFieldValue;
string sPicture=string.IsNullOrEmpty(pageImage.ImageUrl)?“#”:pageImage.ImageUrl;
StringBuilder sText=新的StringBuilder();
Append(“var NewRow=newarray();”;
//这一行显示图表所需的图像和所有其他内容
Append(String.Format(“NewRow.push({v:{0}',f:{2}{3}}}});”,sName,sPicture,sName,sTitle));
Append(String.Format(“NewRow.push('{0}');”,sReportsTo));
Append(String.Format(“NewRow.push('{0}');”,sMoreInfo));
//Append(String.Format(“NewRow.push('{0}');”,sPicture));
Append(String.Format(“rowArr[{0}]=NewRow;”,iRowCounter));
//页面图像
iRowCounter++;
返回sText.ToString();
}
私有SPListItemCollection GetListItems(字符串destList、字符串reportsTo)
{
SPListItemCollection ResultListItems=null;
使用(SPSite oSite=newspsite(SPContext.Current.Web.Url))
{
使用(SPWeb oWeb=oSite.OpenWeb())
{
SPList list=oWeb.Lists.TryGetList(destList);
if(null==列表)
返回结果列表项;
所选字符串=DropDownList2.SelectedValue;
//Label1.Text=已选择;
//检查项目是否已存在。
StringBuilder sCAMLQuery=新的StringBuilder(string.Empty);
sCAMLQuery.Append(“”);
sCAMLQuery.Append(“”);
if(reportsTo!=string.Empty)
{
sCAMLQuery.Append(“”);
sCAMLQuery.Append(“”);
namespace OrganizationChartUsingGoogleAPI.OrganizationChart
{
public static class ConvertTo
{
    /// <summary>
    /// Convert the object type in the given type and handle the DBNULL.
    /// </summary>
    /// <typeparam name="T">Type to convert</typeparam>
    /// <param name="value">value</param>
    /// <returns>converted value and if DBNULL then return the type's default value i.e. string = string.Empty, Int16=0 </returns>
    public static T CastIn<T>(this object value) where T : IConvertible
    {
        if (value == DBNull.Value)
            if (typeof(T) == typeof(string))
            {
                return (T)Convert.ChangeType(string.Empty, typeof(T));
            }
            else
            {
                return default(T);
            }


        if (typeof(T) == typeof(bool))
            return (T)Convert.ChangeType(Convert.ToInt32(value), typeof(T));

        return (T)Convert.ChangeType(value, typeof(T));
    }
}

public partial class OrganizationChartUserControl : UserControl
{
    //Get the List name to fetch the data from
    string listName = "OrgChart_Demo";
    int iRowCounter = 0;
    string sAllNewRows = string.Empty;

    protected void Page_Load(object sender, EventArgs e)
    {
        //Fetch the data (recursively) from the list
        GetNode(string.Empty);

        //Generate the Client Script and Register
        GenerateClientScript(sAllNewRows);
    }

    private void GenerateClientScript(string sAllNewRows)
    {
        string csName1 = "OrgChartScript";
        Type csType = this.GetType();

        ClientScriptManager cs = Page.ClientScript;

        // Check to see if the startup script is already registered. 
        if (!cs.IsStartupScriptRegistered(csType, csName1))
        {
            StringBuilder cstext = new StringBuilder();
            cstext.Append("<script type='text/javascript' src='https://www.google.com/jsapi'></script>");
            cstext.Append("<script type='text/javascript'>");


            cstext.Append("google.load('visualization', '1', { packages: ['orgchart'] });");

            cstext.Append("google.setOnLoadCallback(drawChart);");

            cstext.Append("function drawChart() {");
            cstext.Append("var data = new google.visualization.DataTable();");

            cstext.Append("data.addColumn('string', 'Name');");                
            cstext.Append("data.addColumn('string', 'Manager');");
            cstext.Append("data.addColumn('string', 'ToolTip');");

            cstext.Append("var rowArr = new Array();");

           cstext.Append(sAllNewRows);

            cstext.Append("data.addRows(rowArr);");

            cstext.Append("var chart = new google.visualization.OrgChart(document.getElementById('chart_div'));");
            cstext.Append("chart.draw(data, { allowHtml: true, allowCollapse: true });");
            cstext.Append("}");
            cstext.Append("</script>");
            cs.RegisterClientScriptBlock(csType, csName1, cstext.ToString(), false);

        }

    }

    private void GetNode(string reportsTo)
    {
        SPListItemCollection itemCol = GetListItems(listName, reportsTo);

        foreach (SPListItem item in itemCol)
        {
            //create a new row
            sAllNewRows += createNewRow(item);

            //Recursion
            GetNode(item["Name"].ToString());
        }

    }

    private string createNewRow(SPListItem listItem)
    {

        //Converting list items to strings.
        string sName = ConvertTo.CastIn<string>(listItem["Name"]);
        string sTitle = ConvertTo.CastIn<string>(listItem["Title"]);
        string sMoreInfo = ConvertTo.CastIn<string>(listItem["MoreInfo"]);
        string sReportsTo = ConvertTo.CastIn<string>(listItem["ReportsTo"]);

        //Checking if image field ref is empty or null (if it does't provide any img source link!)
        ImageFieldValue pageImage = listItem["Pageimage"] as ImageFieldValue;
        string sPicture = string.IsNullOrEmpty(pageImage.ImageUrl) ? "#" : pageImage.ImageUrl;


        StringBuilder sText = new StringBuilder();
        sText.Append("var NewRow = new Array();");

        //this row shows the image and everything else what chart needs
        sText.Append(String.Format("NewRow.push({{ v: '{0}', f: '<img src =\"{1}\" style=\"width:57px; height:57px; float:left;\" />{2}<div style=\"color:white; font-style:Arial\">{3}</div>' }});", sName, sPicture, sName, sTitle));

        sText.Append(String.Format("NewRow.push('{0}');", sReportsTo));
        sText.Append(String.Format("NewRow.push('{0}');", sMoreInfo));
        //sText.Append(String.Format("NewRow.push('{0}');", sPicture));
        sText.Append(String.Format("rowArr[{0}] = NewRow;", iRowCounter));

        //Pageimage

        iRowCounter++;
        return sText.ToString();
    }

    private SPListItemCollection GetListItems(string destList, string reportsTo)
    {
        SPListItemCollection ResultListItems = null;

        using (SPSite oSite = new SPSite(SPContext.Current.Web.Url))
        {
            using (SPWeb oWeb = oSite.OpenWeb())
            {
                SPList list = oWeb.Lists.TryGetList(destList);
                if (null == list)
                   return ResultListItems;

                string selected = DropDownList2.SelectedValue;
              // Label1.Text = selected;

                //Check if the item already exist.
                StringBuilder sCAMLQuery = new StringBuilder(string.Empty);
                sCAMLQuery.Append("<Where>");
                sCAMLQuery.Append("<And>");
                if (reportsTo != string.Empty)
                {
                    sCAMLQuery.Append("<Eq>");
                    sCAMLQuery.Append("<FieldRef Name='ReportsTo' />");
                    //sCAMLQuery.Append("<Value Type='Lookup'>" + reportsTo + "</Value>");
                    sCAMLQuery.Append("<Value Type='Text'>" + reportsTo + "</Value>");

                    sCAMLQuery.Append("</Eq>");

                }
                else
                {
                    sCAMLQuery.Append("<IsNull>");
                    sCAMLQuery.Append("<FieldRef Name='ReportsTo' />");
                    sCAMLQuery.Append("</IsNull>");
                }
                sCAMLQuery.Append("<Eq>");
                sCAMLQuery.Append("<FieldRef Name='Kompania' />");
                //sCAMLQuery.Append("<Value Type='Lookup'>" + reportsTo + "</Value>");
                sCAMLQuery.Append("<Value Type='Text'>" + selected + "</Value>");

                sCAMLQuery.Append("</Eq>");

                sCAMLQuery.Append("</And>");
                sCAMLQuery.Append("</Where>");

                SPQuery QueryResult = new SPQuery();
                QueryResult.Query = sCAMLQuery.ToString();
                ResultListItems = list.GetItems(QueryResult);
            }
        }
        return ResultListItems;          
     }              
   }
}
private void GetNode(string reportsTo, int level)
{
    // maybe have some config or value you can set for the max level you want.
    if (level >= 2) return; 

    SPListItemCollection itemCol = GetListItems(listName, reportsTo);

    foreach (SPListItem item in itemCol)
    {
        //create a new row
        sAllNewRows += createNewRow(item);

        //Recursion
        GetNode(item["Name"].ToString(). ++level);
    }

}