3

我有一个 Telerik 的 RadGrid,它有 2 列,如下所示:

<Columns>
 <telerik:GridBoundColumn HeaderText="AirlineCode" UniqueName="AirlineCode" DataField="airlineCode" />
 <telerik:GridBoundColumn HeaderText="FlightNumber " EditFormColumnIndex="1" DataField="flightNumber" />
 ... 
 ... 
 ... more code, but unrelevant to the question here.
</Columns>

我在相关的 NeedDataSource() 函数中为两列提供数据。

所以它正确呈现如下:

 | AirlineCode      |      FlightNumber   | 
 ------------------------------------------
 | Delta            |      2393           | 
 | Southwest        |      345            | 

但现在我的要求发生了一些变化。

为了查看,我想将它们合并在一起并显示如下:

 |     Flight             |
 --------------------------
 |     Delta-2393         | 
 |     Southwest-345      | 

但是,在编辑行时,用户应该能够分别编辑“AirlineCode”和“Flight Number”。并且这些值仍应在数据源中正确维护。

我知道如果我们希望用户以不同的方式“查看”和“编辑”,我们将不得不使用 .

所以我正在尝试这样的事情:

<Columns>
 <telerik:GridTemplateColumn EditFormColumnIndex="0" HeaderText="Flight">
   <ItemTemplate>
  <%#DataBinder.Eval(Container.DataItem, "airlineCode")%>
  <asp:Literal runat="server" Text="-"></asp:Literal>
  <%#DataBinder.Eval(Container.DataItem, "flightNumber")%>
   </ItemTemplate>
   <EditItemTemplate>
  <telerik:GridBoundColumn HeaderText="AirlineCode" UniqueName="AirlineCode" DataField="airlineCode" />
  <telerik:GridBoundColumn HeaderText="FlightNumber " EditFormColumnIndex="1" DataField="flightNumber" />
   </EditItemTemplate>
 </telerik:GridTemplateColumn> ... 
 ... 
 ... more code, but unrelevant to the question here.
</Columns>

但它不起作用。

里面的那两行给出警告:

元素“GridBoundColumn”不是已知元素。如果网站中存在编译错误,或者缺少 web.config 文件,则可能会发生这种情况。

可能我做错了。需要帮忙。

任何帮助表示赞赏。

4

2 回答 2

2

drpcken 是正确的。使用 GridTemplateColumn 时,不需要使用 GridBoundColumn。相反,您提供 View 和 Edit 模板 HTML 并使用Bind表达式在 Edit 模板中进行双向绑定。例如:

<telerik:GridTemplateColumn UniqueName="TemplateColumn">                          
         <ItemTemplate>
              <%# Eval("airlinCode") %> - <%# Eval("flightNumber") %>
          </ItemTemplate>
          <EditItemTemplate>
              <table>
                 <tr>
                   <td style="width: 50%">
                     <asp:TextBox runat="server" Text='<%# Bind("airlineCode") %>' />
                   </td>
                   <td style="width: 50%">
                      <asp:TextBox runat="server" Text='<%# Bind("flightNumber") %>' />
                   </td>
                  </tr>
               </table>
          </EditItemTemplate>
</telerik:GridTemplateColumn>

如您所见,您Eval在 ItemTemplate 和BindEditItemTemplate 中使用。所有其他代码应继续工作而无需更改。

让我也强调一下 Telerik 论坛。对于 Telerik 的特定问题,有一个活跃的社区可以帮助解决问题:www.telerik.com/forums

于 2010-07-19T23:12:01.580 回答
0

自从我使用 radgrid 已经有一段时间了,但是在您的编辑模板中,我相信您需要删除 GridBoundColumns 并放置两个由破折号分隔的文本框控件。然后使用您的 Databinder 填充那些 txt 框。抱歉,由于我在 iPhone 上打字并且无法测试,所以我不能更简洁。当我在我的机器前时,我会跟进你。

祝你好运!

于 2010-07-18T18:09:21.230 回答