2010-07-18 20 views
3

我有一個Telerik的radgrid控件有2列是這樣的:在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」和「航班號」分開。數據源中的值仍應正確維護。

我知道如果我們希望用戶以不同的方式「查看」和「編輯」,我們將不得不使用。

所以我想是這樣的:

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

但它不工作。

那些2線內是提出警告:

元素「GridBoundColumn」不是已知的元件。如果網站中存在編譯錯誤,或者web.config文件丟失,則可能會發生這種情況。

也許我做錯了。需要幫忙。

任何幫助表示讚賞。

回答

0

自從我使用radgrid以來已經有一段時間了,但在您的編輯模板中,我相信您需要刪除GridBoundColumns並將兩個由短劃線分隔的文本框控件。然後用你的數據綁定來填充這些文本框。抱歉,我在iPhone上打字時無法更加簡潔,無法測試。當我在我的機器前面時,我會跟進你。

祝你好運!

+0

我想按照您的建議使用文本框。但我不確定如何使用剛剛提到的數據綁定器部分。我想要其餘的代碼(特別是在NeedDataSource())中保持不變。 感謝您隨時跟進。 – noops 2010-07-18 18:27:29

+1

您需要使用Databinder。綁定而不是Databinder.Eval綁定到文本框並獲取傳遞給數據訪問層或方法的值。而不是使用兩個GridBoundColumns,爲EditItemTemplate使用帶有兩個文本框的單個GridTemplateColumn。對於txtboxes的TextBoxes.Text屬性,請使用

<% #DataBinder.Bind(DataItem.Container("airlineCode") %> - <% #DataBinder.Bind(DataItem.Container("flightNumber") %>
drpcken 2010-07-18 22:08:53

+0

對不起,我在解決如何標記代碼時遇到問題。新的網站也:) – drpcken 2010-07-18 22:23:08

2

drpcken是正確的。當你使用GridTemplateColumn時,你不需要使用GridBoundColumn。相反,您提供查看和編輯模板HTML,並使用Bind表達式在「編輯」模板中執行雙向綁定。例如:

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

正如你所看到的,你在EditItemTemplate中使用在ItemTemplate EvalBind。所有其他代碼應該繼續工作而不用更改。

讓我再強調一下Telerik論壇。對於Telerik的具體問題,有一個活躍的社區可用於幫助排除故障:www.telerik.com/forums

相關問題