C#将String转换为HtmlControl数据类型

时间:2016-04-07 18:28:07

标签: c# asp.net type-conversion clientid htmlcontrols

我正在动态填充保存在我的数据库中的文本框的ID。我从数据集中提取值时将其设置为字符串,该数据集确定搜索的参数。

我现在想使用string参数作为使用客户端ID的Attributes.Add方法的动态ID。我需要的最终结果是使用onfocus事件填充ASP:Textbox的日期选择器。

示例如下:

//setting the value of the item from the dataset 
 string textCode = ds.Tables["CONTROLS"].Rows[1]["TEXTCODE"].ToString();

//inserting the value for use with ClientID
textCode.Attributes.Add("onfocus", "datepicker('" + textCode.ClientID + "');");

我收到的错误是: "'串'不包含' ClientID'的定义接受' string'的第一个参数可以找到(你错过了使用指令或汇编参考")"。

当我尝试将另一个变量转换或设置为HIDControl时,ClientID可用于此:

HtmlControl txtCode = textCode;

我收到以下错误:"无法隐式转换' string'到' System.Web.UI.HtmlControls.HtmlControl'"

如何转换为使用此动态ID?

提前感谢您的建议。

1 个答案:

答案 0 :(得分:0)

评论后更详细的答案.. 我好像你在你的数据库中存储了asp.net服务器控件ID,并且在从数据库中检索它之后,你得到了带有页面控件id的textCode变量(" txtCNo")。

因此,第一步是在您的页面上找到具有此ID的控件。简单的方法是Page.FindControl(...)方法,但是您可以更好地查看本文以了解更多高级情况:Better way to find control in ASP.NET

我还注意到您正在尝试通过调用某些javascript函数datepicker('')来添加onfocus事件。有一种更好的方法来发送在第一步中找到的控件的客户端ID。 (有关服务器与客户端ID的详细信息,请参阅本文:https://msdn.microsoft.com/en-us/library/1d04y8ss.aspx

因此,您的代码应该类似于:

//setting the value of the item from the dataset 
string controlId = ds.Tables["CONTROLS"].Rows[1]["TEXTCODE"].ToString();

var control = Page.FindControl(controlId);
if(control != null)
{
    control.Attributes.Add("onfocus", "datepicker('" + control.ClientID + "');");
}