Mit FindControl zu finden, die den Inhalt eines HTML-Steuerelements
Ich habe diesen code in die code-behind auf meiner Seite, die perfekt funktioniert gut für einen repeater:
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;
}
}
Ich versuche zu tun, etwas ähnliches auf einer anderen Seite, aber es ist mir zu sagen, dass "item" ist nicht gültig:
protected void btnSubmit_OnClick(object sender, EventArgs e)
{
string str10 = ((HtmlInputText)e.Item.FindControl("txtDtSentToCIS")).Value;
}
Ich bin noch ein C# - n00b, kann mir jemand sagen, wie die Referenz der Wert innerhalb dieses Steuerelement? Beide Seiten haben ein runat="server" auf der aspx-Seite, so würde ich erwarten, dass es einen Weg gibt, es zu tun, ich bin sicher, dass meine syntax nur angepasst werden muss.
Dank!
EDIT: Hier ist ein Stück der aspx. Vielleicht sollte ich beachten Sie, dass es ist alles in einem 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>
- Könnten Sie Verwandte aspx-Teil?
- Im ziemlich sicher, dass Ihr repeater nicht wirklich brauchen, um die Verbindung zu öffnen jedes mal. Nur ein Vorschlag.
- Wo ist dein btnSubmit befindet sich in aspx?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie in der Lage sein, um die ID zu erreichen, die Kontrolle. Für die ex. eine textbox:
<asp:TextBox ID="txtDtSentToCIS" runat="server" />
In Ihre code-behind-Sie können etwas tun, als
SomeMethod(this.txtDtSentToCIS.Text);
oder
string enteredByUser = this.txtDtSentToCIS.Text;
Wenn Sie Zugriff auf repeater mit textbox(es) von außen repeater, können Sie code wie diesen:
Durchlaufen der RepeaterItemCollection:
Oder einfach nur den Zugriff über indexer:
Glück.
Wenn Sie mit asp-ich würde vorschlagen, dass Sie mit einer asp Textfeld.
Wenn die Schaltfläche geklickt wird, und Sie die OnClick-Methode aufgerufen wird, suchen Sie das Textfeld, indem Sie Namen und ordnen Sie den text zu Ihrem string.
Sie nicht wirklich brauchen, um verwenden Sie die suchen-Kontrolle, es sei denn, die Kontrolle ist begraben in einem anderen Steuerelement wie ein grid-Ansicht oder der Ansicht "anmelden".
Was passieren kann ist, dass die FindControl-Methode funktioniert nur für das erste Steuerelement-Auflistung in diesem Fall das einzige Steuerelement enthalten ist "Panel3", versuchen Sie dies:
Glück