我以前做过这个,但由于某种原因,现在这对我不起作用。
我有一个asp.FormView,我想在两个asp.Label中插入一个值,我用它来替换在IDE创建时插入到FormView中的TextBox。我想使用TextBox,因为我想以编程方式提供这两个文本框的值。
这根本没有错误,但未能使用预期值填充Label控件。 (即使FormView处于编辑模式而不是插入模式时也是如此。
因此,我将标签从标签更改回TextBox,并再次获得相同的结果。编辑模式显示代码提供的值,而在插入模式下,即使在调试中跟踪它,也不会将值赋值设置为控件的绑定目标。
我无法看到我在这里做错了什么,因为这是在我想在插入模式下将值输入FormView的其他位置。
以下是涉及的代码:
/*-- This is the fragment of code in the aspx which is related to the issue: --*/
<asp:FormView runat="server" ID="EditImpStndPreamble" DataSourceID="ImpStndPreambDS" OnItemCommand="EditImpStndPreamble_ItemCommand" DefaultMode="Edit" DataKeyNames="ARS_Index">
<InsertItemTemplate>
<asp:Label runat="server" Font-Size="Small" Font-Bold="true" Width="60" Text="Index #"></asp:Label>
<asp:Label Text='<%# Eval("ARSEL_Index") %>' runat="server" ID="ARSEL_IndexLabel1" Width="74" />
<asp:Label runat="server" Width="60" Font-Size="Small" Font-Bold="true" Text="Control #"></asp:Label>
<asp:TextBox Text='<%# Bind("ARSControlNum") %>' runat="server" ID="ARSControlNumTextBox" Width="74" />
<asp:LinkButton runat="server" Text="Insert" CommandName="Insert" ID="InsertButton" CausesValidation="True" />
<asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel" ID="InsertCancelButton" CausesValidation="False" />
</InsertItemTemplate>
</asp:FormView>
// This is the fragmentof code in the C# code behind related to the issue
// This is where we update the control number
TextBox ctrnum = (TextBox)EditImpStndPreamble.Row.FindControl("ARSControlNumTextBox");
if (ctrnum != null)
ctrnum.Text = Session["CurrentControl"].ToString();
任何人都可以看到我在这里摸索的内容或者有关于将这些值置于插入模式的建议吗? 谢谢!
更新时间:美国中部时间3/21/17 8:47
今天早上我认为这是一个回发问题,并为每个TextBox添加了Autopostback =“true”。
我观察到的是,在我第一次点击代码时,autopostback没有填充TextBox。但是,当我再次点击它并返回时,该值已正确填充。所以,我想跟进将是如何保持控件刷新,直到它显示值而不强迫用户点击两次以填充框?
注意:我已经更正了最初的问题,以正确反映'TextBoxes'而不是Labels。我将它保留为TextBox,直到我解决了这个问题。
答案 0 :(得分:0)
我不知道这是否能解决您的整个问题,但在您提供的代码段中没有标签ARSControlNumLabel
。
您的标签都没有ID
属性,因此FindControl
无法找到它们。
答案 1 :(得分:0)
添加AutoPostBack =&#34; true&#34;嵌入式TextBox控件允许在FormView处于插入模式时显示值。