protected void Page_Load(object sender, EventArgs e) { // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // перевод веб-страницы Localization.TranslatePage(this, "Scada.Web.WFrmEvents"); // получение данных пользователя UserData userData = UserData.GetUserData(); // установка фильтра событий if (userData.Role == ServerComm.Roles.Custom) { rbEvView.Checked = true; rbEvAll.Enabled = false; } else if (AppData.WebSettings.EventFltr) { rbEvView.Checked = true; } else { rbEvAll.Checked = true; } }
protected void Page_Load(object sender, EventArgs e) { // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // получение данных пользователя UserData userData = UserData.GetUserData(); // проверка входа в систему userData.CheckLoggedOn(Context, false); if (userData.LoggedOn) { AddRefreshScript(); } else { AddLoginScript(); } }
protected void Page_Load(object sender, EventArgs e) { // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // получение данных пользователя UserData userData = UserData.GetUserData(); // проверка входа в систему userData.CheckLoggedOn(Context, false); if (!userData.LoggedOn) { AddLoginScript(); return; } // определение даты запрашиваемых событий DateTime reqDate; try { reqDate = new DateTime(int.Parse(Request["year"]), int.Parse(Request["month"]), int.Parse(Request["day"])); } catch { reqDate = DateTime.MinValue; } // обновление событий, получение их временной метки if (reqDate > DateTime.MinValue) { EventTableLight eventTable; AppData.MainData.RefreshEvents(reqDate, out eventTable); hidEvStamp.Value = eventTable.FileModTime.Ticks.ToString(); } // добавление скрипта обновления данной страницы AddRefreshScript(AppData.WebSettings.EventRefrFreq * 1000); }
protected void Page_Load(object sender, EventArgs e) { // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // получение данных пользователя UserData userData = UserData.GetUserData(); // проверка входа в систему userData.CheckLoggedOn(Context, false); if (!userData.LoggedOn) { throw new Exception(WebPhrases.NotLoggedOn); } // перевод веб-страницы Localization.TranslatePage(this, "Scada.Web.WFrmTableView"); // определение индексов выбранного представления int viewSetIndex, viewIndex; if (!int.TryParse(Request["viewSet"], out viewSetIndex)) { viewSetIndex = -1; } if (!int.TryParse(Request["view"], out viewIndex)) { viewIndex = -1; } // получение табличного представления и прав пользователя на него BaseView baseView; MainData.Right right; TableView tableView = userData.GetView(typeof(TableView), viewSetIndex, viewIndex, out baseView, out right) ? (TableView)baseView : null; // проверка загрузки представления и прав на просмотр информации if (tableView == null) { throw new Exception(WebPhrases.UnableLoadView); } else if (!right.ViewRight) { throw new Exception(CommonPhrases.NoRights); } // определение параметров запроса int year, month, day, stage; int.TryParse(Request["year"], out year); int.TryParse(Request["month"], out month); int.TryParse(Request["day"], out day); int.TryParse(Request["stage"], out stage); DateTime reqDate; try { reqDate = new DateTime(year, month, day); } catch { throw new Exception(WebPhrases.IncorrectDate); } // формирование таблицы отображаемых элементов представления int itemCnt = tableView.VisibleCount; int itemLastInd = itemCnt - 1; if (itemCnt > 0) { // формирование таблицы обозначений элементов представления TableRow row = new TableRow(); row.CssClass = "hdr"; NewCell(row, WebPhrases.ItemColumn); tblCap.Rows.Add(row); const string textHtmlTempl = "<table class=\"cap\" cellpadding=\"0\" cellspacing=\"0\"><tr>" + "<td>{0}</td><td>{1}</td><td>{2}</td></tr></table>"; const string hintHtmlTempl = "<div class=\"hint\">{0}</div>"; const string iconHtmlTempl = "<img src=\"images/paramIcons/{0}\" alt=\"\" />"; const string capHtmlTempl = "<span>{0}</span>"; const string diagHtmlTempl = "<a href=\"javascript:ShowDiag({0}, {1}, {2}, {3}, {4}, {5})\">"; const string cmdHtmlTempl = "<a href=\"javascript:SendCmd({0}, {1}, {2})\">" + "<img src=\"images/cmd.gif\" alt=\"\" /></a>"; bool canSendCmd = AppData.WebSettings.CmdEnabled && right.CtrlRight; for (int itemInd = 0; itemInd < itemCnt; itemInd++) { TableView.Item item = tableView.VisibleItems[itemInd]; int cnlNum = item.CnlNum; int cntrlCnlNum = item.CtrlCnlNum; string text; if (cnlNum > 0 || cntrlCnlNum > 0) { CnlProps cnlProps = item.CnlProps; List <string> hintLines = new List <string>(); if (cnlNum > 0) { hintLines.Add(WebPhrases.InCnlNumHint + cnlNum); } if (cntrlCnlNum > 0) { hintLines.Add(WebPhrases.OutCnlNumHint + cntrlCnlNum); } if (cnlProps != null) { hintLines.Add(WebPhrases.ObjectHint + cnlProps.ObjName); hintLines.Add(WebPhrases.KPHint + cnlProps.KPName); hintLines.Add(WebPhrases.ParamHint + cnlProps.ParamName); if (cnlProps.ShowNumber && cnlProps.UnitArr != null && cnlProps.UnitArr.Length > 0) { hintLines.Add(WebPhrases.UnitHint + cnlProps.UnitArr[0]); } } string hint = string.Join("<br />", hintLines.ToArray()); string hintHtml = string.Format(hintHtmlTempl, hint); string iconFileName = cnlProps == null || cnlProps.IconFileName == "" ? "undef.gif" : cnlProps.IconFileName; string iconHtml = string.Format(iconHtmlTempl, iconFileName); string capHtml = string.Format(capHtmlTempl, item.Caption); string cmdHtml = canSendCmd && cntrlCnlNum > 0 ? string.Format(cmdHtmlTempl, viewSetIndex, viewIndex, cntrlCnlNum) : ""; if (cnlNum > 0) { string diagHtml = string.Format(diagHtmlTempl, viewSetIndex, viewIndex, year, month, day, cnlNum); iconHtml = diagHtml + iconHtml + "</a>"; capHtml = diagHtml + capHtml + "</a>"; } text = string.Format(textHtmlTempl, iconHtml + hintHtml, capHtml, cmdHtml); } else { text = item.Caption == "" ? "<p> </p>" : "<p>" + item.Caption + "</p>"; } row = new TableRow(); SetCssClass(row, itemInd % 3 == 2, itemInd == itemLastInd); NewCell(row, text); tblCap.Rows.Add(row); } // получение обновлённых данных часовых срезов SrezTableLight hourTable; AppData.MainData.RefreshData(reqDate, out hourTable); // формирование ячейки текущего среза row = new TableRow(); row.CssClass = "hdr"; NewCell(row, WebPhrases.CurColumn); tblCur.Rows.Add(row); row = new TableRow(); NewCell(row, "<iframe id=\"frameCurVal\" src=\"" + "CurVals.aspx?viewSet=" + viewSetIndex + "&view=" + viewIndex + "&year=" + year + "&month=" + month + "&day=" + day + "&hourStamp=" + hourTable.FileModTime.Ticks + "\" frameborder=\"0\" scrolling=\"no\"></iframe>"); tblCur.Rows.Add(row); // формирование заголовка таблицы часовых значений int firstHour = stage == 2 ? 12 : 0; int lastHour = stage == 1 ? 11 : 23; row = new TableRow(); row.CssClass = "hdr"; tblHour.Rows.Add(row); for (int hour = firstHour; hour <= lastHour; hour++) { NewCell(row, hour.ToString()); } // формирование содержимого таблицы часовых значений // для оптимизации доступа к данным порядок заполнения следующий: по часам, по элементам for (int hour = firstHour; hour <= lastHour; hour++) { bool isFirstHour = hour == firstHour; DateTime dateTime = new DateTime(year, month, day, hour, 0, 0); int rowInd = 1; for (int itemInd = 0; itemInd < itemCnt; itemInd++) { TableView.Item item = tableView.VisibleItems[itemInd]; string text; string color; if (item.CnlNum > 0) { text = AppData.MainData.GetCnlVal(hourTable, item.CnlNum, dateTime, false, out color); } else { text = ""; color = ""; } if (isFirstHour) { row = new TableRow(); SetCssClass(row, itemInd % 3 == 2, itemInd == itemLastInd); tblHour.Rows.Add(row); text = text == "" ? "<p> </p>" : "<p>" + text + "</p>"; } else { row = tblHour.Rows[rowInd++]; } TableCell cell = NewCell(row, text); if (!(color == "" || color.ToLower() == "black")) { cell.ForeColor = Color.FromName(color); } } } } else { tblCap.Visible = false; tblCur.Visible = false; tblHour.Visible = false; lblNoData.Visible = true; } }
protected void Page_Load(object sender, EventArgs e) { // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // получение данных пользователя UserData userData = UserData.GetUserData(); // проверка входа в систему if (!userData.LoggedOn) { throw new Exception(WebPhrases.NotLoggedOn); } // определение индексов выбранного представления int viewSetIndex, viewIndex; if (!int.TryParse(Request["viewSet"], out viewSetIndex)) { viewSetIndex = -1; } if (!int.TryParse(Request["view"], out viewIndex)) { viewIndex = -1; } // получение представления и прав пользователя на него BaseView baseView; MainData.Right right; TableView tableView = userData.GetView(null, viewSetIndex, viewIndex, out baseView, out right) ? baseView as TableView : null; // определение типа вывода событий int eventOut; string eventOutStr = Request["eventOut"]; if (eventOutStr == "all") { eventOut = 1; // все события } else if (eventOutStr == "view") { eventOut = 2; // по представлению } else { eventOut = 0; // не выводить } // проверка параметров генерации отчёта if (tableView == null && eventOut == 0) { throw new Exception(WebPhrases.NoReportData); } // проверка загрузки представления и прав на получение информации if (baseView == null) { throw new Exception(WebPhrases.UnableLoadView); } else if (!right.ViewRight || eventOut == 1 && userData.Role == ServerComm.Roles.Custom) { throw new Exception(CommonPhrases.NoRights); } // определение даты, за которую формируется отчёт int year, month, day; int.TryParse(Request["year"], out year); int.TryParse(Request["month"], out month); int.TryParse(Request["day"], out day); DateTime reqDate; try { reqDate = new DateTime(year, month, day); } catch { throw new Exception(WebPhrases.IncorrectDate); } // создание отчёта RepBuilder rep = new RepHrEvTable(); try { // вывод в журнал AppData.Log.WriteAction(string.Format(WebPhrases.GenReport, rep.RepName, userData.UserLogin), Log.ActTypes.Action); // установка типа страницы и имени файла отчёта Response.ClearHeaders(); Response.ContentType = "application/octet-stream"; Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + Path.GetFileNameWithoutExtension(baseView.FileName) + reqDate.ToString(" yyyy-MM-dd") + ".xml\""); // установка параметров отчёта rep.SetParams(baseView, reqDate, eventOut); // генерация отчёта rep.Make(Response.OutputStream, Request.PhysicalApplicationPath + @"templates\"); } catch (Exception ex) { string errMsg = string.Format(WebPhrases.GenReportError, rep.RepName, ex.Message); AppData.Log.WriteAction(errMsg, Log.ActTypes.Exception); Response.ClearHeaders(); Response.ContentType = "text/html"; Response.Write(ScadaUtils.HtmlEncodeWithBreak(errMsg)); } }
protected void Page_Load(object sender, EventArgs e) { // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // получение данных пользователя UserData userData = UserData.GetUserData(); // проверка входа в систему userData.CheckLoggedOn(Context, false); if (!userData.LoggedOn) { throw new Exception(WebPhrases.NotLoggedOn); } // перевод веб-страницы Localization.TranslatePage(this, "Scada.Web.WFrmEvTable"); // определение индексов выбранного представления int viewSetIndex, viewIndex; if (!int.TryParse(Request["viewSet"], out viewSetIndex)) { viewSetIndex = -1; } if (!int.TryParse(Request["view"], out viewIndex)) { viewIndex = -1; } // получение представления и прав пользователя на него BaseView view; MainData.Right right; userData.GetView(null, viewSetIndex, viewIndex, out view, out right); // вывод сообщения о загрузке if (view == null && right.ViewRight) { lblLoading.Visible = true; tblEv.Visible = false; hidEvStamp.Value = "-1"; return; } // определение фильтра событий bool showAllEvents = Request["filter"] == "all"; // проверка загрузки представления и прав на просмотр информации if (view == null) { throw new Exception(WebPhrases.UnableLoadView); } else if (!right.ViewRight || showAllEvents && userData.Role == ServerComm.Roles.Custom) { throw new Exception(CommonPhrases.NoRights); } // определение параметров запроса int year, month, day; int.TryParse(Request["year"], out year); int.TryParse(Request["month"], out month); int.TryParse(Request["day"], out day); DateTime reqDate; try { reqDate = new DateTime(year, month, day); } catch { throw new Exception(WebPhrases.IncorrectDate); } // получение обновлённых данных событий EventTableLight eventTable; AppData.MainData.RefreshEvents(reqDate, out eventTable); hidEvStamp.Value = eventTable.FileModTime.Ticks.ToString(); List <int> cnlList = showAllEvents ? null : view.CnlList; List <MainData.EventView> events = AppData.MainData.ConvertEvents( AppData.MainData.GetLastEvents(eventTable, cnlList, AppData.WebSettings.EventCnt)); if (events.Count > 0) { for (int eventInd = events.Count - 1; eventInd >= 0; eventInd--) { MainData.EventView eventView = events[eventInd]; TableRow row = new TableRow(); WFrmTableView.NewCell(row, eventView.Num, "c"); WFrmTableView.NewCell(row, eventView.Date, "c"); WFrmTableView.NewCell(row, eventView.Time, "c"); WFrmTableView.NewCell(row, eventView.Obj); WFrmTableView.NewCell(row, eventView.KP); WFrmTableView.NewCell(row, eventView.Cnl); WFrmTableView.NewCell(row, eventView.Text); // установка номера события для воспроизведения звука при загрузке страницы if (eventView.Sound && string.IsNullOrEmpty(hidSndEvNum.Value)) { hidSndEvNum.Value = eventView.Num; } // формирование ячейки квитирования if (right.CtrlRight && !eventView.Check) { string chkCellText = "<a href=\"javascript:CheckEvent(" + viewSetIndex + ", " + viewIndex + ", " + year + ", " + month + ", " + day + ", " + eventView.Num + ")\" style=\"color: " + eventView.Color + "\">" + eventView.User + "</a>"; WFrmTableView.NewCell(row, chkCellText, "c"); } else { WFrmTableView.NewCell(row, eventView.User, "c"); } // установка свойств строки таблицы WFrmTableView.SetCssClass(row, eventInd % 3 == 2, eventInd == 0); string color = eventView.Color; if (!(color == "" || color.ToLower() == "black")) { row.ForeColor = Color.FromName(color); } tblEv.Rows.Add(row); } } else { lblNoData.Visible = true; tblEv.Visible = false; } }
protected void Page_Load(object sender, EventArgs e) { // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // получение данных пользователя UserData userData = UserData.GetUserData(); // определение индексов выбранного представления int viewSetIndex, viewIndex; if (!int.TryParse(Request["viewSet"], out viewSetIndex)) { viewSetIndex = -1; } if (!int.TryParse(Request["view"], out viewIndex)) { viewIndex = -1; } // получение табличного представления и прав пользователя на него BaseView baseView; MainData.Right right; TableView tableView = userData.GetView(typeof(TableView), viewSetIndex, viewIndex, out baseView, out right) ? (TableView)baseView : null; // проверка входа в систему и прав на просмотр информации if (userData.LoggedOn && tableView != null && right.ViewRight) { // определение параметров запроса int year, month, day; int.TryParse(Request["year"], out year); int.TryParse(Request["month"], out month); int.TryParse(Request["day"], out day); string hourStamp = Request["hourStamp"]; DateTime reqDate; try { reqDate = new DateTime(year, month, day); } catch { throw new Exception(WebPhrases.IncorrectDate); } // обновление данных SrezTableLight hourTable; AppData.MainData.RefreshData(reqDate, out hourTable); // формирование таблицы текущих значений элементов представления int itemCnt = tableView.VisibleCount; int itemLastInd = itemCnt - 1; for (int itemInd = 0; itemInd < itemCnt; itemInd++) { TableView.Item item = tableView.VisibleItems[itemInd]; string text; string color; if (item.CnlNum > 0) { text = AppData.MainData.GetCnlVal(item.CnlNum, false, out color); } else { text = ""; color = ""; } TableRow row = new TableRow(); TableCell cell = WFrmTableView.NewCell(row, text == "" ? "<p> </p>" : "<p>" + text + "</p>"); WFrmTableView.SetCssClass(row, itemInd % 3 == 2, itemInd == itemLastInd); tblCurVals.Rows.Add(row); if (!(color == "" || color.ToLower() == "black")) { cell.ForeColor = Color.FromName(color); } } if (string.IsNullOrEmpty(hourStamp) || hourStamp == hourTable.FileModTime.Ticks.ToString()) { // добавление скрипта обновления текущих значений по таймауту AddRefreshCurValsScript(AppData.WebSettings.SrezRefrFreq * 1000); } else { // добавление скрипта обновления часовых значений при загрузке AddRefreshHourValsScript(); } } else { // добавление скрипта обновления часовых значений при загрузке // для перехода на страницу входа в систему AddRefreshHourValsScript(); } }
protected string viewFileNameArrStr; // строковая запись массива имён файлов представлений protected void Page_Load(object sender, EventArgs e) { // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // получение данных пользователя UserData userData = UserData.GetUserData(); // проверка входа в систему userData.CheckLoggedOn(Context); // перевод веб-страницы Localization.TranslatePage(this, "Scada.Web.WFrmMain"); // определение индекса выбранного при входе набора представлений int viewSetInd; int.TryParse(Request.Params["viewSet"], out viewSetInd); viewSetIndStr = viewSetInd.ToString(); // получение выбранного набора представлений, если на него есть права ViewSettings.ViewSet viewSet = null; int viewCnt = 0; if (userData.GetViewSetRight(viewSetInd).ViewRight) { List <ViewSettings.ViewSet> viewSetList = userData.ViewSettings.ViewSetList; if (0 <= viewSetInd && viewSetInd < viewSetList.Count) { viewSet = viewSetList[viewSetInd]; viewCnt = viewSet.Count; // вывод заголовка страницы Title = "SCADA - " + viewSet.Name; // заполнение списка представлений bool first = true; for (int i = 0; i < viewCnt; i++) { if (userData.GetViewRight(viewSetInd, i).ViewRight) { ListItem item = new ListItem(viewSet[i].Title, i.ToString()); item.Selected = first; ddlView.Items.Add(item); first = false; } } } } // заполнение списков дней, месяцев и годов, выбор текущей даты DateTime today = DateTime.Today; int curDay = today.Day; for (int day = 1; day <= 31; day++) { string dayStr = day.ToString(); ListItem item = new ListItem(day < 10 ? "0" + dayStr : dayStr, dayStr); item.Selected = day == curDay; ddlDay.Items.Add(item); } int curMonth = today.Month; string[] monthNames = Localization.Culture.DateTimeFormat.MonthNames; for (int month = 1; month <= 12; month++) { ListItem item = new ListItem(monthNames[month - 1], month.ToString()); item.Selected = month == curMonth; ddlMonth.Items.Add(item); } for (int i = 0, year = today.Year; i < 10; i++, year--) { string yearStr = year.ToString(); ListItem item = new ListItem(yearStr, yearStr); item.Selected = i == 0; ddlYear.Items.Add(item); } // добавление скрипта перемещения выпадающего списка дней после списка месяцев, если необходимо if (Localization.DayAfterMonth) { ClientScript.RegisterStartupScript(this.GetType(), "Startup", "PlaceDayAfterMonth();", true); } // привязка событий ddlView.Attributes["onchange"] = "ShowData()"; ddlDay.Attributes["onchange"] = "ShowData()"; ddlMonth.Attributes["onchange"] = "ShowData()"; ddlYear.Attributes["onchange"] = "ShowData()"; rbStage1.Attributes["onclick"] = "ShowView()"; rbStage2.Attributes["onclick"] = "ShowView()"; rbStageFull.Attributes["onclick"] = "ShowView()"; // настройка отображения событий и фрейма для проверка входа в систему pnlEvents.Visible = AppData.WebSettings.EventCnt > 0; frameLoginChecker.Visible = !pnlEvents.Visible; // формирование массивов, описывающих представления if (viewCnt > 0) { string[] viewTypeArr = new string[viewCnt]; string[] viewFileNameArr = new string[viewCnt]; for (int i = 0; i < viewCnt; i++) { ViewSettings.ViewInfo viewInfo = viewSet[i]; viewTypeArr[i] = "\"" + viewInfo.Type + "\""; viewFileNameArr[i] = "\"" + viewInfo.FileName + "\""; } viewTypeArrStr = "[" + string.Join(", ", viewTypeArr) + "]"; viewFileNameArrStr = "[" + string.Join(", ", viewFileNameArr) + "]"; } else { viewTypeArrStr = "\"\""; viewFileNameArrStr = "\"\""; } }
protected void Page_Load(object sender, EventArgs e) { // disable the page caching // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // get the current user data // получение данных пользователя UserData userData = UserData.GetUserData(); // check login // проверка входа в систему userData.CheckLoggedOn(Context, false); if (!userData.LoggedOn) { throw new Exception(WebPhrases.NotLoggedOn); } // get the selected view indexes // определение индексов выбранного представления int viewSetIndex; if (!int.TryParse(Request["viewSet"], out viewSetIndex)) { viewSetIndex = -1; } int viewIndex; if (!int.TryParse(Request["view"], out viewIndex)) { viewIndex = -1; } // get the view and user rights // получение представления и прав пользователя на него BaseView view; MainData.Right right; userData.GetView(typeof(WebPageView), viewSetIndex, viewIndex, out view, out right); // check the view loading and check the view rights // проверка загрузки представления и прав на просмотр информации if (view == null) { throw new Exception(WebPhrases.UnableLoadView); } else if (!right.ViewRight) { throw new Exception(CommonPhrases.NoRights); } // retrieve the page information, fill the lists of channels used in the view // извлечение информации о веб-странице и заполнение списков каналов, используемых в представлении PageInfo pageInfo = PageInfo.ParsePage(this); ((WebPageView)view).AddCnlNums(pageInfo); // get the date for diagrams // определение даты, используемой для построения графиков DateTime diagDate; try { diagDate = new DateTime(int.Parse(Request["year"]), int.Parse(Request["month"]), int.Parse(Request["day"])); } catch { diagDate = DateTime.Today; } // refresh the current data // обновление таблицы текущего среза AppData.MainData.RefreshData(); // display the input channels data // вывод значений входных каналов foreach (CnlBinding cnlBinding in pageInfo.InCnlBindings) { Control ctrl = cnlBinding.Control; int inCnlNum = cnlBinding.CnlNum; if (ctrl is Label) { Label lbl = (Label)ctrl; if (inCnlNum > 0) { string color; lbl.Text = AppData.MainData.GetCnlVal(inCnlNum, false, out color); lbl.ForeColor = Color.FromName(color); } else { lbl.Text = ""; } } else if (cnlBinding.Control is HyperLink) { HyperLink hl = (HyperLink)ctrl; if (inCnlNum > 0) { string color; hl.NavigateUrl = "javascript:ShowDiag(" + viewSetIndex + ", " + viewIndex + ", " + diagDate.Year + ", " + diagDate.Month + ", " + diagDate.Day + ", " + inCnlNum + ", '../')"; hl.Text = AppData.MainData.GetCnlVal(inCnlNum, false, out color); hl.ForeColor = Color.FromName(color); } else { hl.Text = ""; } } } // tune up the links binded to input channels // настройка ссылок, связанных с каналами управления foreach (CnlBinding cnlBinding in pageInfo.CtrlCnlBindings) { Control ctrl = cnlBinding.Control; int ctrlCnlNum = cnlBinding.CnlNum; if (cnlBinding.Control is HyperLink) { HyperLink hl = (HyperLink)ctrl; if (ctrlCnlNum > 0) { if (right.CtrlRight) { hl.NavigateUrl = "javascript:SendCmd(" + viewSetIndex + ", " + viewIndex + ", " + ctrlCnlNum + ", '../')"; } else { hl.Visible = false; } } else { hl.Text = ""; } } } }