我在我的页面上的代码隐藏中得到了这个代码,这对于转发器来说非常合适:
protected void AcctAssnRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["PBRConnectionString"].ConnectionString);
con.Open();
{
string str10 = ((HtmlInputText)e.Item.FindControl("txtFlgUpdatedOn")).Value;
}
}
我正在尝试在另一个页面上做类似的事情,但它告诉我“item”无效:
protected void btnSubmit_OnClick(object sender, EventArgs e)
{
string str10 = ((HtmlInputText)e.Item.FindControl("txtDtSentToCIS")).Value;
}
我仍然是C#n00b,谁能告诉我如何引用此控件中的值?这两个页面在aspx端都有一个runat =“server”,所以我希望有一种方法可以做到,我确信我的语法只需要调整。
谢谢!
编辑:这是aspx的一部分。也许我应该注意到它都在Tab Control中。 <div style="width:430px;border:1px solid blue;float:left;">
<asp:Panel ID="Panel3" runat="server" Height="220px" style="float:left; margin-left: 19px"
Width="410px">
<table>
<tr>
<td width="210px">BIL Name:</td>
<td width="200px"><asp:textbox id="txtCISName" runat="server"></asp:textbox></td>
</tr>
<tr>
<td width="210px">Date Sent To BIL:</td>
<td width="200px"><input type="text" id="txtDtSentToCIS" class="datepicker" name="txtDtSentToCIS" runat="server" style="height: 14px; width: 70px" /></td>
</tr>
<tr>
<td width="210px">BIL Sign Off Received:</td>
<td width="200px"><asp:DropDownList ID="cboCISSignOff" runat="server" Height="16px"
AutoPostBack="True" onselectedindexchanged="chkCISSignOff_CheckedChanged">
<asp:ListItem>N</asp:ListItem>
<asp:ListItem>Y</asp:ListItem>
</asp:DropDownList></td>
</tr>
<tr>
<td width="210px"><asp:Label runat="server" Text="BIL Response:" ID="CISResp" /></td>
<td width="200px"><asp:textbox id="txtCISResponse" runat="server"
textmode="MultiLine" rows="9" Width="180px"></asp:textbox></td>
</tr>
</table>
</asp:Panel>
</div>
答案 0 :(得分:1)
您应该可以使用ID来访问控件。对于前者文本框:
<asp:TextBox ID="txtDtSentToCIS" runat="server" />
在您的代码中,您可以执行某些操作
SomeMethod(this.txtDtSentToCIS.Text);
或
string enteredByUser = this.txtDtSentToCIS.Text;
答案 1 :(得分:0)
如果您想从转发器外部访问包含文本框的转发器,您可以这样编码:
迭代RepeaterItemCollection:
foreach (RepeaterItem item in Repeater1.Items)
{
TextBox txtDtSentToCIS = item.FindControl("txtDtSentToCIS") as TextBox;
}
或者只是通过索引器访问:
TextBox txtDtSentToCIS = Repeater1.Items[1].FindControl("txtDtSentToCIS") as TextBox;
祝你好运。
答案 2 :(得分:0)
如果您使用的是asp,我建议您使用asp文本框。
<asp:TextBox ID="textBoxName" runat="server" />
单击按钮并调用OnClick方法时,您可以按名称搜索文本框并将文本分配给字符串。
string str10 = textBoxName.text;
除非该控件隐藏在另一个控件(如网格视图或登录视图)中,否则您不需要使用find控件。
答案 3 :(得分:0)
可能发生的是FindControl方法仅适用于第一个控件集合,在这种情况下,唯一包含的控件是“Panel3”,试试这个:
var panel = e.Item.FindControl("Panel3") as Panel;
string str10 = ((HtmlInputText)panel.FindControl("txtFlgUpdatedOn")).Value;
祝你好运