1

グリッドを含むこのマルチビュー コントロールがあります。

<asp:MultiView ID="MultiView1" ActiveViewIndex="0" runat="server" >
<asp:View ID="View1" runat="server" >
<telerik:RadGrid ID="RadGrid1" runat="server" RegisterWithScriptManager="false" AutoGenerateColumns="false" >
<MasterTableView>
<Columns>
<telerik:GridBoundColumn HeaderText="ID" DataField="ID"></telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Name" DataField="NAME"></telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="LastName" DataField="LASTNAME"></telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Description" DataField="DESCRIPTION"></telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
<asp:Button ID="Navigate" runat="server" OnClick="Navigate_Click" Text="Next" />
</asp:View>
<asp:View ID="View2" runat="server" >

Save your changes 
<asp:Button ID="save" runat="server" OnClick="save_click" Text="Save " />
</asp:View>
</asp:MultiView>

サーバーコード:

private void convertRadGridTohtml()
{
    StringBuilder SB = new StringBuilder();
    StringWriter SW3 = new StringWriter(SB);
    HtmlTextWriter htmlTW = new HtmlTextWriter(SW3);
    RadGrid1.RenderControl(htmlTW);
    StringWriter oStringWriter = new StringWriter();
    HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
    RadGrid1.RenderControl(oHtmlTextWriter);
    string html = oHtmlTextWriter.InnerWriter.ToString();
   // toput.InnerHtml = html;
}

グリッドがマルチビュー内に配置されている場合、関数は常に空の文字列を返しますが、マルチビューの外に配置されている場合、html オブジェクトは正常に機能し、グリッドを html として返します。

4

1 に答える 1

0

RadGrid1 を直接参照すると、関数が壊れているようです。マルチビューに埋もれているため、最初にアクティブなビューを見つけて、グリッドにドリルダウンします。これを試してください

  RadGrid  RadGrid1=(RadGrid)MultiView1.Views(1).FindControl("RadGrid1");
  RadGrid1.RenderControl(oHtmlTextWriter);

このようにして、RadGrid1 とその内容を正しく見つけていることが保証されます。

于 2013-07-26T13:27:52.763 に答える