string[] commandArgs = e.CommandArgument.ToString().Split(new char[] {','}); //Convert the buttons arguments to server/service variables
string strServerName = commandArgs[0];
string strServiceName = commandArgs[1];
string strLabelID = String.Format(strServerName + "_" + strServiceName + "_" + "Status"); //assign the strLabelID to the format: "servername_servicename_Status" for updating the label text
直接使用时,这有效,因为标签ID名称为“serverx_spooler_Status”......
serverx_spooler_Status.Text = String.Format(strServiceName); //update label text
即使“strLabelID”的值为“serverx_spooler_Status”,这也会失败...
strLabelID.Text = String.Format(strServiceName); //update label text
感谢Derek的搜索方向!解决方案就是这个......
// Find control on page.
Control myControl1 = FindControl(strLabelID);
Label myLabel1 = (Label)myControl1;
myLabel1.Text = "Updated Label Text!";
答案 0 :(得分:1)
string service = "winmgmt";
string server = "DFS5600";
string labelText = string.Format("{0}_{1)_Status", server, service);
foreach (Control ctr in this.Controls)
{
if (ctr is Label)
{
if (ctr.Name == labelText)
{
ctr.Text = "Hello Label";
}
}
}
答案 1 :(得分:0)
serverx_spooler_Status
的类型可能是Label
(未显示)Text
字段,因此serverx_spooler_Status.Text
有效。
strLabelID
的类型为string
(首次加入),没有Text
字段,因此对strLabelID.Text
的访问无效
尝试:
strLabelID = String.Format(strServiceName);
这会将strLabelID
的值更改为strServiceName
的值(基本上与:strLabelID = strServiceName;
相同)
如果您确实想要更新标签,则需要一个Label
类型的对象,您可以在其中访问Text
字段并更新该字段(只是谎言您正在使用{{1} })。如果您有任何其他可以使用的标签对象,则不会显示您的代码包含。
答案 2 :(得分:0)
我认为这就是你要找的东西: -
Label.Text = String.Format(“{0} _ {1} _Status”,strServerName,strServiceName);
那应该有用。
或者你可以说: -
string strLabelID = String.Format(“{0} _ {1} _Status”,strServerName,strServiceName);
label1.Text = strLabelID;
不太清楚你的意思。希望这会有所帮助。
答案 3 :(得分:0)
我认为这可能会有所帮助。
您需要做的是遍历项目中的所有标签,直到找到如下匹配项: -
string strLabelID = String.Format(“{0} _ {1} _Status”,strServerName,strServiceName);
foreach(控制ctr in this.Controls) {
if(ctr是Label) { if(ctr.Name == strLabelID) { //在这里做什么 } } }