使用字符串变量内容作为标签ID来更新label.Text,我得到错误 - 'string'不包含'Text'的定义

时间:2012-04-12 15:08:10

标签: c# string label

C#newbie所以要温柔!下面是使用按钮中的参数创建字符串以匹配标签ID的代码,以便我可以更新标签文本。

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!";

4 个答案:

答案 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)                  {                      //在这里做什么                  }      } }