【发布时间】:2011-07-19 12:55:44
【问题描述】:
我已经阅读了很多关于这方面的帖子,尤其是在这个网站上,但我仍然找不到我正在寻找的确切内容。我在 .cs 文件中填充我的 Gridview,而不是在 .aspx 中添加到它的 Columns 部分。我有两个字段我希望仍然可以引用,但希望它们不可见。我知道 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>
【问题讨论】:
-
你想对页面上这些不可见的列做什么?
-
您是否需要这样做?为什么不能将它们放在 .aspx 中?
-
其中之一是 IdentityColumn,当您单击该行时,它会使用该数据中的数字来查找数据库中的相应字段。另一个有点倒退,但我正在使用该数据填充数据库另一列中的复选框。我只会使用该字段本身,但它显示为灰色...
-
我想除了我不完全知道如何在 .aspx 中执行此操作这一事实之外,没有什么特别的原因 - 如果我确实添加了一个更简单的方法来实现这一点它在 .aspx 中?
标签: c# asp.net gridview invisible