0

我在页面的代码隐藏中有这段代码,这对于转发器来说非常好:

    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;
         }
     }

我试图在另一个页面上做类似的事情,但它告诉我“项目”无效:

    protected void btnSubmit_OnClick(object sender, EventArgs e)
    {
        string str10 = ((HtmlInputText)e.Item.FindControl("txtDtSentToCIS")).Value;
     }

我仍然是 C# n00b,谁能告诉我如何引用这个控件中的值?两个页面在 aspx 端都有一个 runat="server",所以我希望有办法做到这一点,我确信我的语法只需要调整。

谢谢!

编辑:这是一块aspx。也许我应该注意它都在选项卡控件中。

                <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

4 回答 4

1

您应该能够使用 ID 访问控件。例如。一个文本框:

<asp:TextBox ID="txtDtSentToCIS" runat="server" />

在您背后的代码中,您可以执行以下操作

SomeMethod(this.txtDtSentToCIS.Text);

或者

string enteredByUser = this.txtDtSentToCIS.Text;

于 2013-05-07T13:37:35.960 回答
0

如果您想从转发器外部访问包含文本框的转发器,您可以编写如下代码:

迭代RepeaterItemCollection:

foreach (RepeaterItem item in Repeater1.Items)
{
    TextBox txtDtSentToCIS = item.FindControl("txtDtSentToCIS") as TextBox;
}

或者只是通过索引器访问:

TextBox txtDtSentToCIS = Repeater1.Items[1].FindControl("txtDtSentToCIS") as TextBox;

祝你好运。

于 2013-05-07T14:15:25.727 回答
0

如果您使用的是 asp,我建议您使用 asp 文本框。

<asp:TextBox ID="textBoxName" runat="server" />

单击按钮并调用 OnClick 方法时,您可以按名称搜索文本框并将文本分配给您的字符串。

string str10 = textBoxName.text;

您实际上不需要使用查找控件,除非该控件隐藏在另一个控件中,例如网格视图或登录视图。

于 2013-05-07T14:47:39.897 回答
0

可能发生的情况是 FindControl 方法仅适用于第一个控件集合,在这种情况下,包含的唯一控件是“Panel3”,试试这个:

var panel = e.Item.FindControl("Panel3") as Panel;
string str10 = ((HtmlInputText)panel.FindControl("txtFlgUpdatedOn")).Value;

祝你好运

于 2013-08-20T14:57:01.907 回答