2017-07-25 16 views
0

私はパネルをASP.NETコントロールに持っています。目に見えない場合、PanelGridViewsはすべてデータバインディングです。 Panelが目に見えないときに私はそれらを望んでいません。以下のsolutionが提示された。それはPlaceholdersに適したソリューションであると私は私の質問はどのように私は今、.aspxページにマークアップでNEWPANELクラスを使用しないで​​パネルは不可視ですが子供はデータバインディングです

public class NewPanel : Panel 
{ 
    protected override void DataBindChildren() 
    { 
     if (visible) 
     { 
      base.DataBindChildren(); 
     } 
    } 
} 

のためにそれを実装しようとしましたか? コード内のPanelのメソッドを単にオーバーライドする方法がありますが、マークアップにはPanelをそのまま使用していますか?

この私が、通常の背後にあるコードでデータバインドし、私は意志パネル内のaspxコードの一部

<asp:GridView ID="AssignedGV" runat="server" AutoGenerateColumns="False" DataKeyNames="OrderID" DataSourceID="AssignedDS" Width="100%"> 
     <Columns> 
      <asp:TemplateField HeaderText="Created" SortExpression="DateOrderCreated"> 
        <ItemTemplate> 
         <asp:Label ID="Label1" runat="server" Text='<%# Bind("DateOrderCreated", "{0:d-MMM-yyyy}") %>'></asp:Label> 
        </ItemTemplate> 

<asp:SqlDataSource ID="AssignedDS" runat="server" ConnectionString="<%$ ConnectionStrings:XXXXXXX %>" SelectCommand="SELECT TOP (100) PERCENT T_Orders.OrderID, XXXXXXXXXXXXXXXXX OrderQuoteVersion.RequestApprovalOfEmployeeID, T_Orders.JobNumber FROM XXXXXXX AS T_OrderQuoteVersion RIGHT OUTER JOIN XXXXX AS T_Orders INNER JOIN XXXXXXX ON T_Orders.CustomerID = T_Customers.CustomerID ON T_OrderQuoteVersion.OrderID = T_Orders.OrderID "></asp:SqlDataSource> 

このコードでされており、パネルが

+0

現在、データバインディングはどのようになっていますか? SQLDataSourceコントロールを使用しているのか、C#コードビハインドページを使用していますか?現在の関連するASPXマークアップも含めることができますか? –

+0

関連コードを記載しました。はい、私はSqlDataSourceコントロールを使用しています。 –

答えて

1

目に見えないであるかどうかにかかわらず、databindedます私はそれがあなたにもっとコントロールを与えることがわかるように、ここでそのアプローチを使用してください。私は、SQLDataSourceコントロールの使用を維持している回答を見ることに興味があります。

あなたのaspxに行う必要があるのは、SQLDataSourceコントロールを削除することだけです。あなたはそれはタイプミスや他の愚かな誤差がある場合がございますが、あなたが動いて取得するのに十分である必要があり、私は、コードをテストしていない何かのような

//Put this in PageLoad or Load, what ever suits you best 
//The IsPostBack check is optional....remove it if that fits tour needs better 
if(!IsPostBack) 
{ 
    //Use the Appropriate Panel ID below 
    if(PanelID.Visible) 
    { 
     string constring = "Your Connection String"; 
     using (SqlConnection con = new SqlConnection(constring)) 
     { 
      using (SqlCommand cmd = new SqlCommand("YOUR SQL QUERY", con)) 
      { 
       cmd.CommandType = CommandType.Text; 
       using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) 
       { 
        using (DataTable dt = new DataTable()) 
        { 
         sda.Fill(dt); 
         AssignedGV.DataSource = dt; 
         AssignedGV.DataBind(); 
        } 
       } 
      } 
     } 
    } 
} 

をお勧めします後ろにあなたのコードで

正しい方向。

+0

あなたのソリューションは良いですが、私はすでに書かれているコードの多くを編集しているので、私はSqlDataSourceソリューションを追求しようとしていますが動作します。御時間ありがとうございます。 –

+1

解決策が他にある場合は、ここに投稿して、あなたの成功からすべての利益を得ることができるようにしてください。あなたが自分の答えを見つけたら、自分の答えを受け入れることに何も問題はありません。 –

関連する問題