Я пытаюсь сделать столбец в моем несвязанном виде сетки невидимым, в частности идентификатор.Я связываю сетку с ADO.net, поэтому я не могу просто установить тег в HTML-код невидимым.Вот некоторый код ...
protected void btn_search_Click(object sender, EventArgs e)
{
SqlConnection cs = new SqlConnection("Data Source=WILSON-PC; Initial Catalog=KamManOnline; Integrated Security=TRUE");
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = new SqlCommand("SELECT oid, Supplier, DepartmentA, DepartmentB, DepartmentC, OrderNumber, CONVERT(varchar(10), PORecieptDate, 101) AS PORecieptDate, CONVERT(varchar(10), ProductRecieved, 101) AS ProductRecieved, CONVERT(varchar(10),POEntryDate, 101) AS POEntryDate FROM tbl_OrderD WHERE (Supplier = @Supplier OR @Supplier IS NULL) AND (DepartmentA = @DepartmentA OR @DepartmentA IS NULL) AND (OrderNumber = @OrderNumber OR @OrderNumber IS NULL) AND (PORecieptDate BETWEEN @FromA AND @ToA OR (@FromA IS NULL AND @ToA IS NULL)) AND (ProductRecieved BETWEEN @FromB AND @ToB OR (@FromB IS NULL AND @ToB IS NULL)) AND (POEntryDate BETWEEN @FromC AND @ToC OR (@FromC IS NULL AND @ToC IS NULL))", cs);
if (!chk_Suppliers.Checked) da.SelectCommand.Parameters.Add("@Supplier", SqlDbType.VarChar).Value = ddl_SupplierView.Text.ToString();
else da.SelectCommand.Parameters.Add("@Supplier", SqlDbType.VarChar).Value = DBNull.Value;
if (!chk_Departments.Checked) da.SelectCommand.Parameters.Add("@DepartmentA", SqlDbType.VarChar).Value = ddl_DepartmentView.Text.ToString();
else da.SelectCommand.Parameters.Add("@DepartmentA", SqlDbType.VarChar).Value = DBNull.Value;
if (txt_orderNumView.Text != "") da.SelectCommand.Parameters.Add("@OrderNumber", SqlDbType.VarChar).Value = txt_orderNumView.Text.ToString();
else da.SelectCommand.Parameters.Add("@OrderNumber", SqlDbType.VarChar).Value = DBNull.Value;
if (txt_PORecievedFrom.Text != "" && txt_PORecievedTo.Text != "")
{
da.SelectCommand.Parameters.Add("FromA", SqlDbType.SmallDateTime).Value = txt_PORecievedFrom.Text.ToString();
da.SelectCommand.Parameters.Add("ToA", SqlDbType.Date).Value = txt_PORecievedTo.Text.ToString();
}
else
{
da.SelectCommand.Parameters.Add("FromA", SqlDbType.Date).Value = DBNull.Value;
da.SelectCommand.Parameters.Add("ToA", SqlDbType.Date).Value = DBNull.Value;
}
if (txt_ProductRecievedFrom.Text != "" && txt_ProductRecievedTo.Text != "")
{
da.SelectCommand.Parameters.Add("FromB", SqlDbType.Date).Value = txt_PORecievedFrom.Text;
da.SelectCommand.Parameters.Add("ToB", SqlDbType.Date).Value = txt_PORecievedTo.Text;
}
else
{
da.SelectCommand.Parameters.Add("FromB", SqlDbType.Date).Value = DBNull.Value;
da.SelectCommand.Parameters.Add("ToB", SqlDbType.Date).Value = DBNull.Value;
}
if (txt_POEntryFrom.Text != "" && txt_poEntryTo.Text != "")
{
da.SelectCommand.Parameters.Add("FromC", SqlDbType.Date).Value = txt_PORecievedFrom.Text;
da.SelectCommand.Parameters.Add("ToC", SqlDbType.Date).Value = txt_PORecievedTo.Text;
}
else
{
da.SelectCommand.Parameters.Add("FromC", SqlDbType.Date).Value = DBNull.Value;
da.SelectCommand.Parameters.Add("ToC", SqlDbType.Date).Value = DBNull.Value;
}
ds.Clear();
da.Fill(ds);
gv_search.DataSource = ds.Tables[0];
gv_search.DataBind();
}
Это ваша старая старая функция поиска ASP.net.Тем не менее, в этом виде сетки я включаю выбор следующим образом ...
protected void gv_search_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Redirect("selectedOrder.aspx?oid=" + gv_search.SelectedValue.ToString());
}
Я знаю, что я могу установить oid на вкладку datakey.Тем не менее, я хочу сделать это невидимым.Я попробовал этот метод здесь ...
protected void gv_search_RowCreated(object sender, GridViewRowEventArgs e)
{
gv_search.Columns[0].Visible = false;
}
Это дало мне эту ошибку ...
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
Кто-нибудь знает, как это сделать?Спасибо