2011-07-19 7 views
1

このサイトでは、特にこのサイトで多くの投稿を読んでいますが、探しているものがまだまったく見つかりません。 .aspxファイルのColumnsセクションに追加するのではなく、.csファイルでGridviewを埋めています。私はまだ参照できるようにしたいが、目に見えないようにしたい2つのフィールドを持っている。私はGridviewがこの種のものには特に良いとは思っていませんが、私が行方不明になっていることを達成できる方法はありますか?Gridviewの列を非表示にしますが、データにアクセスします。

は.cs

protected void searchFill() 
{ 
    orderByString = orderByList.SelectedItem.Value; 
    fieldString = searchTextBox.Text; 
    string sqlStatement = "SELECT fName AS [First], lName as [Last], addr AS [Address], email AS [Email], phone AS [Phone], ccType AS [Credit Card Type], length AS [Length], IdentityColumn, processed FROM SecureOrders WHERE fName LIKE '%" + fieldString + "%' OR lName LIKE'%" + fieldString + "%' OR addr LIKE'%" + fieldString + "%' OR addr2 LIKE'%" + fieldString + "%' OR city LIKE'%" + fieldString + "%' OR state LIKE'%" + fieldString + "%' OR zip LIKE'%" + fieldString + "%' OR zip LIKE'%" + fieldString + "%' OR country LIKE'%" + fieldString + "%' OR email LIKE'%" + fieldString + "%' OR phone LIKE'%" + fieldString + "%' OR ccType LIKE'%" + fieldString + "%' OR ccNum LIKE'%" + fieldString + "%' OR ccExp LIKE'%" + fieldString + "%' OR cwaSource LIKE'%" + fieldString + "%' OR cwaJoined LIKE'%" + fieldString + "%' OR length LIKE'%" + fieldString + "%' OR delivery LIKE'%" + fieldString + "%' OR price LIKE'%" + fieldString + "%' OR url LIKE'%" + fieldString + "%' ORDER BY " + orderByString; 
    using (SqlConnection connection = new SqlConnection(connectionString.ToString())) 
    { 
     connection.Open(); 
     SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlStatement, connection); 
     dataAdapter.SelectCommand.Parameters.AddWithValue("@fieldString", fieldString); 
     dataAdapter.SelectCommand.Parameters.AddWithValue("@orderByString", orderByString); 
     SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter); 
     DataSet dataSet = new DataSet(); 

     dataAdapter.Fill(dataSet, "SecureOrders"); 

     DataView source = new DataView(dataSet.Tables[0]); 
     DefaultGrid.DataSource = source; 
     DefaultGrid.DataBind(); 

     connection.Close(); 
    } 
} 

.aspxの

<asp:GridView ID="DefaultGrid" 
     runat = "server" 
     DataKeyNames = "IdentityColumn" 
     onselectedindexchanged = "DefaultGrid_SelectedIndexChanged" 
     autogenerateselectbutton = "true" 
     enableviewstate = "false" 
     selectedindex="1"> 
    <SelectedRowStyle BackColor="Azure" 
     forecolor="Black" 
     font-bold="true" /> 
    <Columns> 
    <asp:TemplateField HeaderText = "Processed"> 
     <ItemTemplate> 
      <asp:CheckBox 
       ID="CheckBoxProcess" 
       AutoPostBack="true" 
       Checked='<%#Eval("processed") %>' 
       OnCheckedChanged="CheckBoxProcess_CheckedChanged" 
       runat="server" 
       Enabled="true" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
+0

ページのこれらの目に見えない列はどうしますか? –

+0

これを行う必要がある理由はありますか?あなたはなぜそれらを.aspxに入れないのですか? –

+0

これらのうちの1つはIdentityColumnです。その行をクリックすると、そのデータの番号を使用してデータベース内の対応するフィールドが検索されます。もう1つは、少し後ろですが、私はそのデータを使用して、データベースの別の列のチェックボックスに記入しています。私はちょうどそのフィールド自体を使用しますが、それは灰色のアウトを示しています... –

答えて

1

グリッドビュー内で<%# Eval("ColumnName") %>を使用するだけで、列の値を使用したいところです。
GridViewのコンテキスト内で、すべてのデータソース(ケースのデータセット)の値をDataBinderで使用できます。

+0

しかし、列は不可視である必要があります。 –

+0

基本的には、列を不可視に設定する方法はわかりません。 –

+0

列は不可視で、あなたが好きな評価方法を使用して、表示するスタイルを設定することができます:hidden。 –

1

あなただけ非表示にしたいの値についてHiddenFieldsを使用することができます。コントロールを非表示にするだけで列全体を作成する必要はありません。

<asp:HiddenField runat="server" ID="hdf_Identity" Value='<%# Eval("IdentityField") %>' /> 

グリッドビューの行で検索する場合は、検索するだけです。 Hereは、役に立つmsdnドキュメントです。

0

display:hiddenでcssクラス "HiddenCol"を作​​成できます。次に、そのクラスで非表示にする列をスタイルします。

関連する問題