textarea 里面 detailsview asp.net

Posted

技术标签:

【中文标题】textarea 里面 detailsview asp.net【英文标题】:textarea inside detailsview asp.net 【发布时间】:2014-02-07 00:16:03 【问题描述】:

我正在尝试构建一个网格视图和详细信息来管理用户注释。

一切正常,但我需要在详细视图中添加一个带有多行的文本框:

    <asp:DetailsView ID="DetailsView1" ClientIDMode="Static" runat="server" SkinID="detailview" AllowPaging="True" Width="700px" AutoGenerateRows="False" DataKeyNames="id,Expr1" DataSourceID="SqlDataSource2" HeaderText="الملاحظات" oniteminserted="updategridview" onitemupdated="updategridview">
            <Fields>
                <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" />
                <asp:BoundField DataField="user_id" HeaderText="user_id" SortExpression="user_id" />
                <asp:BoundField DataField="xdate" HeaderText="xdate" SortExpression="xdate" />
                <asp:TemplateField HeaderText="xcontent">
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("xcontent") %>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="update" ClientIDMode="Static" TextMode="MultiLine" Text='<%# Eval("xcontent") %>' Height="100px" runat="server"></asp:TextBox>
                    </EditItemTemplate>
                    <InsertItemTemplate>
                        <asp:TextBox ID="insert" ClientIDMode="Static" TextMode="MultiLine" Text="" Height="100px" runat="server"></asp:TextBox>
                    </InsertItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="name" HeaderText="name" SortExpression="name"  />
                <asp:CommandField ShowInsertButton="True" />
                <asp:CommandField ShowEditButton="True"/>
            </Fields>
        </asp:DetailsView>


   <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:samy_sarc %>" InsertCommand="INSERT INTO sarcusernote(user_id, xdate, xcontent) VALUES (@user_id, @xdate, @xcontent)" SelectCommand="SELECT sarcusernote.*,(select firstname from sarcuser where id=2) as name, id AS Expr1 FROM sarcusernote WHERE (id = @id)" UpdateCommand="UPDATE sarcusernote SET user_id = @user_id, xdate = @xdate, xcontent = @xcontent WHERE (id = @id)">
        <InsertParameters>
            <asp:Parameter Name="user_id" />
            <asp:Parameter Name="xdate" />
            <asp:ControlParameter ControlID="insert" DefaultValue="%" Name="xcontent" PropertyName="Text" />
        </InsertParameters>
        <SelectParameters>
            <asp:ControlParameter ControlID="GridView1"  DefaultValue="0" Name="id" PropertyName="SelectedValue" />
        </SelectParameters>
        <UpdateParameters>

            <asp:Parameter Name="user_id" />
            <asp:Parameter Name="xdate" />
            <asp:ControlParameter ControlID="update" Name="xcontent" PropertyName="Text" Type="String" DefaultValue="%" />
            <asp:Parameter Name="id" />
        </UpdateParameters>
    </asp:SqlDataSource>

查询中没有错误...因为它工作正常。 问题是当我更新或插入一些值时出现这些错误:

异常详细信息:System.InvalidOperationException:在 ControlParameter 'xcontent' 中找不到控件 'update'。

请帮忙

【问题讨论】:

【参考方案1】:

问题是您的 ControlParameter 找不到嵌套在 DetailsView 内的控件(因为它位于不同的 ContentTemplate 中)。通常有两种方法可以解决这个问题。

方法一:使用“$”符号访问嵌套控件。

您可以将标记更新为以下内容:

<asp:ControlParameter ControlID="DetailsView1$update" Name="xcontent" 
    PropertyName="Text" Type="String" DefaultValue="%" />

使用outerControlID$innerControlID 将允许您的 ControlParameter 找到嵌套控件。

方法#2:在代码隐藏中添加参数。

您可以通过编程方式将控件添加到代码隐藏中的 UpdateParameters 集合中。这有点像 hack,但如果你需要,我可以举一个例子。

【讨论】:

感谢您提供的详细信息和第一种方法适用于我的解决方案。

以上是关于textarea 里面 detailsview asp.net的主要内容,如果未能解决你的问题,请参考以下文章

JS-实时修改在textarea里面的span(实际输入的文字)

用codemirro在线编辑高亮显示,获取不到textarea里面的内容

textarea 谷歌浏览器里面 右下角怎么去掉有三角形的拖动标志

删除 DetailsView 控件中的 [选定] 边框

JS textarea内容里面有br就换行 我是从数据库出来数据,有<br />

textarea 谷歌浏览器里面 右下角怎么去掉有三角形的拖动标志