使用VB.NET在ASP.NET的detailsView中集成CKEditor
我正在尝试将CKEditor与详细信息视图集成。我的示例代码是:使用VB.NET在ASP.NET的detailsView中集成CKEditor,asp.net,database,ado.net,ckeditor,ckeditor.net,Asp.net,Database,Ado.net,Ckeditor,Ckeditor.net,我正在尝试将CKEditor与详细信息视图集成。我的示例代码是: <asp:DetailsView ID="DetailsViewStation" runat="server" Height="50px" AutoGenerateRows="False" DataKeyNames="StationNo" DataSourceID="StationSqlDataSource" CellPadding="4" Fo
<asp:DetailsView ID="DetailsViewStation" runat="server" Height="50px" AutoGenerateRows="False"
DataKeyNames="StationNo" DataSourceID="StationSqlDataSource" CellPadding="4"
ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" />
<CommandRowStyle BackColor="#FFFFC0" Font-Bold="True" />
<FieldHeaderStyle BackColor="#FFFF99" Font-Bold="True" />
<Fields>
<asp:BoundField DataField="StationNo" HeaderText="Station Number" ReadOnly="True"
SortExpression="StationNo" ApplyFormatInEditMode="True">
<HeaderStyle Width="150px" />
<ItemStyle HorizontalAlign="Center" Width="1200px" />
</asp:BoundField>
<asp:BoundField DataField="Station_Name" HeaderText="Station Name" SortExpression="Station_Name">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
</Fields>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
</asp:DetailsView>
<asp:SqlDataSource ID="StationSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:AgainConnectionString %>"
DeleteCommand="DELETE FROM [StationInfoTable] WHERE [StationNo] = @StationNo"
InsertCommand="INSERT INTO [StationInfoTable] ([StationNo], [Station_Name] VALUES (@StationNo, @Station_Name)"
SelectCommand="SELECT * FROM [StationInfoTable] WHERE ([StationNo] = @StationNo)"
UpdateCommand="UPDATE [StationInfoTable] SET [Station_Name] = @Station_Name, [Importatnat_Info] = @Importatnat_Info WHERE [StationNo] = @StationNo">
<DeleteParameters>
<asp:Parameter Name="StationNo" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="StationNo" Type="Int32" />
<asp:Parameter Name="Station_Name" Type="String" />
</InsertParameters>
<SelectParameters>
<asp:ControlParameter ControlID="ListBoxChoices" Name="StationNo" PropertyName="SelectedValue"
Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="Station_Name" Type="String" />
<asp:Parameter Name="StationNo" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
我想用CKEditor编辑“详细信息”视图中的数据,以插入和删除数据库的链接。以前有人这样做过吗?我不是
详细视图专家,但我认为下面的概述涵盖了您需要做的事情
对站点名称使用模板字段
而不是边界字段
。看起来是这样的:
<asp:TemplateField HeaderText="Station Name">
<ItemTemplate>
<asp:Label ID="lblStationName" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Station_Name") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<CKEditor:CKEditorControl ID="CKEditor1" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Station_Name") %>' />
</EditItemTemplate>
</asp:TemplateField>
如果无法绑定到CKEditor
控件的Text属性,则可以使用与检索控件相同的方式将值分配给CKEditor
Text
控件:通过执行DetailsViewStation.FindControl(“CKEditor1”)
检索控件,并将从数据库检索到的HTML分配给控件的Text
属性
我希望这有帮助 根据您所做的评论,您永远不会从文本框/CKEditor检索该值
由于DataBinder.Eval
,您的绑定是只读的
试一试
或
编辑:根据您的评论:
您是如何生成SQLDataSource的?最好使用设计器。我猜你是想自己生成代码。我看到多个错误:
在UpdateParameters中,您使用的是ControlParameters,但是您得到的值都是错误的。分配给控件的值应分配给PropertyName。然后将相应CKEditor的名称分配给ControlID
像这样:
<asp:ControlParameter ControlID="CKEditor12" PropertyName="Footer_notes" Type="String" />
下面的代码是在集成了CKEditor和DetailsView之后编写的,我将答案放在这里是为了让其他人清楚地阅读并从中受益。除了Notes字段外,所有内容都是一样的,我想使用CKEditor在数据库中插入超链接
<asp:TemplateField HeaderText="Notes">
<ItemTemplate>
<asp:Label ID="lblStationNotes" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Notes") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<CKEditor:CKEditorControl ID="CKEditor11" runat="server" Text='<%# Bind("Notes") %>' />
</EditItemTemplate>
</asp:TemplateField>
你好,艾哈迈德。ImportantInfo
是要编辑的字段吗?如果不是,你想编辑哪个字段?数据库比我上面的代码大。为了便于理解,我删除了其中的字段。但是对于上面的代码,我想编辑Station_Name字段。那么您使用的是Details视图,所以您可以编辑和删除各个记录上的链接?我说的对吗?是的,我有编辑、删除和新建的所有内容。好的,应该可以了。顺便说一句,你可能会发现这个网站非常有用:它不工作。将BoundField更改为TemplateField后出现错误。因此,这意味着我不应该使用detailsView,如果是,您使用哪种方式?数据绑定:“System.Web.UI.WebControls.detailsView”不包含名为“Station\u name”的属性。对不起,我遗漏了一些内容。很抱歉,我犯了一个错误:我应该说“DataItem.Station\u Name”,而不是数据绑定语言中的“Station\u Name”。很抱歉。嘿,我把eval改为Bind,程序有很多错误。然后,我删除了dataBinder并离开了just Bind,我运行了它,我有一个错误:在控制参数“Station_Name”中找不到控件“CKEditor1”。当然,它很有用,我很抱歉我没有感谢你,因为我有点忙。另外,我会标记你的答案,但她从一开始就指导我更多。对我来说,我会给你们两个打分作为答案,但我想我做不到。我是新来的,所以如果我能让我知道,请。谢谢你的帮助。
<asp:TemplateField HeaderText="Station Name">
<ItemTemplate>
<asp:Label ID="lblStation_Name" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Station_Name") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<CKEditor:CKEditorControl ID="CKEditor1" runat="server" Text='<%# DataBinder.Bind(Container, "DataItem.Station_Name") %>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:ControlParameter ControlID="CKEditor12" PropertyName="Footer_notes" Type="String" />
<asp:TemplateField HeaderText="Notes">
<ItemTemplate>
<asp:Label ID="lblStationNotes" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Notes") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<CKEditor:CKEditorControl ID="CKEditor11" runat="server" Text='<%# Bind("Notes") %>' />
</EditItemTemplate>
</asp:TemplateField>