我一直在尝试创建一个可以让我利用ViewState和AutoPostBack的自定义服务器控件,但没有成功。棘手的是我的控件是HTML和JavaScript的组合。这是渲染输出的一个很好的例子(我也使用了JS库,因此是缩写示例):
<input type="text" id="txt" />
<script>
$(function() {
$("#txt").TurnMeIntoDatePicker({
value: new Date(1950,1,1)
});
});
</script>
在此示例中,输入的“id”和JS函数的“value”需要作为参数公开(并且在通过ViewState回发后维护它们的值)。我见过的每个例子都允许你为input元素分配参数,但不能给JS的一些自定义字符串赋值。我也很想知道如何添加AutoPostBack功能,但只会是肉汁!
答案 0 :(得分:2)
您是否正在实施IPostBackDataHandler?您可以使用它从回发的输入字段中检索值。此外,您的示例未在输入字段中显示名称...您需要输出名称才能正确回发该值。在这里查看样本......
http://msdn.microsoft.com/en-us/library/system.web.ui.ipostbackdatahandler.aspx
您可以使用Page.ClientScript.GetPostBackEventReference(...)
执行AutoPostBack。例如,如果您想在值更改时进行回发,则可以渲染如下内容:
protected override void Render(HtmlTextWriter writer)
{
string content = string.Format("<input type=\"text\" id=\"txt\" onchange=\"{0}\" />", Page.ClientScript.GetPostBackEventReference(this, null));
writer.Write(content);
}