我有一个DetailsView控件,里面是一个TextBox模板。 我需要在插入数据事件处理程序 - ,_ItemInserting时找出TextBox的值。
该脚本不起作用。蚂蚁想法?感谢
-------------------- WEB FORM
<asp:TemplateField HeaderText="Profile" SortExpression="ContentAuthor">
<ItemTemplate>
<asp:Label ID="uxContentAuthorDisplayer" runat="server" Text='<%# Bind("ContentAuthor") %>'></asp:Label>
</ItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="uxContentAuthorInput" runat="server" Text='<%# Bind("ContentAuthor") %>'></asp:TextBox>
</InsertItemTemplate>
</asp:TemplateField>
--------------------代码背后
protected void uxInsertAuthor_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
//// Find control on page
TextBox myAuthorProfile = (TextBox)uxInsertAuthorInput.FindControl("uxContentAuthorDisplayer");
// Set a default value in Data Base if field has been left empty (DB field NOT NULL)
if (string.IsNullOrEmpty(myAuthorProfile.Text))
{
string myAllert = "Field is NULL";
}
else
{
string myAllet = "Field is NOT NULL";
}
}
答案 0 :(得分:1)
尝试使用FindControl
容器控件(DetailsView)的TemplateField
方法。例如,如果您的DetailsView被命名为“MyControl”,请尝试
//// Find control on page
TextBox myAuthorProfile = (TextBox)MyControl.FindControl("uxContentAuthorInput");
您在FindControl方法中使用Label控件的ID,并且您正尝试将其转换为TextBox。
答案 1 :(得分:1)
另一个选择是从DetailsViewInsertEventArgs
获取值。它有一个名为Values
的属性,它是一个字典,包含将从DetailsView进入数据库的所有绑定值。所以你可以改为:
if (string.IsNullOrEmpty(e.Values("ContentAuthor")))
{
string myAlert = "Field is NULL";
}
else
{
string myAlert = "Field is NOT NULL";
}
答案 2 :(得分:0)
如果我理解正确,您希望在将数据放入TextBox
时检查DetailsView
的值。 ItemInserting
事件不是您要查找的事件:
http://msdn.microsoft.com/en-us/library/keezbt7k.aspx
我会说ItemCreated
是您正在寻找的那个。