【问题标题】:Where does the Item tickbox come from项目复选框来自哪里
【发布时间】:2011-06-01 07:56:56
【问题描述】:

我目前有一个 DetailsView(以前是一个 Formview,但那是一个没有 Masterpage 和 ObjectDataSource 的 nogo)。

不知何故,我在源代码中找不到图形中的“项目 []”(复选框)。 它在“Kommentar:”之后和“Dato:”之前以图形方式找到

                <asp:DetailsView ID="dv_InsertComment" runat="server" DefaultMode="Insert" DataSourceID="ods_InsertComment"
                    HeaderText="Kommentar:">
                    <Fields>
                        <asp:TemplateField HeaderText="Dato:">
                            <InsertItemTemplate>
                                <asp:Label ID="dNow" runat="server" Text='<%# DateTime.Now.ToShortDateString() %>'></asp:Label>
                            </InsertItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Konto" Visible="false">
                            <InsertItemTemplate>
                                <asp:TextBox ID="tbAccountIns" runat="server"></asp:TextBox>
                            </InsertItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Kommentar:">
                            <InsertItemTemplate>
                                <asp:TextBox ID="tbCommentIns" runat="server" Rows="3" Columns="50" TextMode="MultiLine"></asp:TextBox>
                            </InsertItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Status:">
                            <InsertItemTemplate>
                                <asp:DropDownList ID="StatusList" runat="server" DataSourceID="ods_StatusOptions"
                                    DataTextField="name">
                                </asp:DropDownList>
                            </InsertItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Fremnotering:">
                            <InsertItemTemplate>
                                <asp:DateBox ID="dFuture" runat="server" AllowNullDate="true" />
                            </InsertItemTemplate>
                        </asp:TemplateField>
                        <asp:ButtonField ButtonType="Button" Text="Indsæt kommentar" CommandName="Insert" />
                        <asp:ButtonField ButtonType="Button" Text="Annuller" CommandName="Cancel" />
                    </Fields>
                </asp:DetailsView>

除此之外,参数列表还需要一个“!”新日期之后。也就是它需要:“员工、帐户、评论、类型、状态、新日期、!”

                <asp:ObjectDataSource ID="ods_InsertComment" runat="server" InsertMethod="InsertComment"
                    TypeName="OurClient.Host.CommentsBLL" SelectMethod="GetNothing">
                    <InsertParameters>
                        <asp:SessionParameter Name="employee" SessionField="employee" DbType="String" />
                        <asp:Parameter Name="Account" DbType="String" />
                        <asp:Parameter Name="Comment" DbType="String" />
                        <asp:Parameter Name="Type" DefaultValue="0" DbType="Int32" />
                        <asp:Parameter Name="Status" DbType="Int32" />
                        <asp:Parameter Name="NewDate" DbType="DateTime" />
                    </InsertParameters>
                </asp:ObjectDataSource>

我在想如果我删除项目和复选框,“!”参数也会消失。但如果它不存在,我该如何删除它?

我删除了整个&lt;Fields&gt;&lt;/Fields&gt;,只剩下Item []。我将DefaultMode="Insert" 移出,Item [] 变灰(不可点击)。正如我在开头所说的那样 - DetailsView 是一个解决方案,而不是 FormView

在您询问GetNothing 是一个要求之前,它必须定义一个SelectMethod。除非它存在,否则无法编译它。

解决方案:AutoGenerateRows="False" &lt;asp:detailsview ....&gt;

我是怎么发现那个的?我转到有问题的 aspx,更改为拆分视图并继续分析实际存在的控件。我偶然发现了自动生成复选框。

【问题讨论】:

  • Item
  • 好吧,从它所在的地方:在 Dato 之前:和在 Kommentar 之后:不知何故,你的 aspx 与生成的 html 不一致(但你已经知道了)。您是否尝试过注释掉所有模板字段并一个一个地添加它们?
  • 我什至删除了所有这些,包括字段定义。该项目仍然存在。如果我删除 DetailsView 项目也会消失。不知何故,它似​​乎链接到 DetailsView 而不是单个字段。确认后,我刚刚注释掉了每个字段,既扩展了选择,又撤回了选择。 &lt;%-- --%&gt;。该项目始终存在。我们的图形专家最近添加了 css,但没有在 FormView 或 DetailsView 上指定任何内容。
  • 解决方案:AutoGenerateRows="False"
  • 这解释了复选框控件的名称“ctl01”。它每次都会自动生成该列。好眼力。您应该编辑您的问题并添加此解决方案,以便其他人快速查看。非常好。很高兴你把它整理好了。

标签: c# asp.net objectdatasource detailsview


【解决方案1】:

您是否搜索过代码隐藏文件?

也许复选框被注入?

复选框的id是“ContentPlaceHolder2_dv_InsertComment_ctl01”,可以是动态添加的控件。

检查您的代码隐藏文件中是否有任何字符串,例如“InsertComment”或“dv_”或“_dv”等,然后查看。

我只是在猜测。

【讨论】:

  • 未找到。我最接近那个头脑风暴的是 - 我将帐号从另一个控件转移到 cmets 博客控件。 ` // 设置账号TextBox tbAcc = (TextBox)dv_InsertComment.FindControl("tbAccountIns"); tbAcc.Text = account.Text; `(输入参数中的账户(标签))
  • 这很奇怪好吧。鉴于复选框不在设计中,但显示在渲染标记中,它似乎是一个动态添加。后面的代码中是否有任何“CheckBox”类型的声明?我的意思是,必须有代码在某个时候读取复选框值?
  • 我在整个解决方案中没有使用任何 CheckBox。甚至没有“记住我的登录信息”。
  • 哇,确实很奇怪,复选框 一定来自某个地方。很抱歉未能提供更多帮助。
  • 我假设您正在编译和运行代码并看到复选框,而不是将源代码与已发布版本进行比较?我只是问,因为如果您将版本控制中的源代码与已发布版本进行比较,您的源代码可能不是最新版本或比已发布版本晚,而 2 根本不匹配。也许 JavaScript 正在某个地方添加复选框?
猜你喜欢
  • 2023-04-08
  • 2018-09-12
  • 1970-01-01
  • 2021-07-01
  • 2013-05-10
  • 2011-10-29
  • 1970-01-01
  • 2010-09-21
  • 2015-05-19
相关资源
最近更新 更多