使用FindControl查找HTML控件的内容

时间:2013-05-07 13:27:22

标签: c# asp.net winforms

我在我的页面上的代码隐藏中得到了这个代码,这对于转发器来说非常合适:

    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>

4 个答案:

答案 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;
祝你好运