Я искал это, и ответ, похоже, не работает. У меня есть следующие функции в C# код:Изменение порядка отображения полей в DataGrid
public void Show_Data2(string LPI_ID)
{
OracleConnection conn = GetConnection();
try
{
{
//conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnCST"].ToString();
OracleCommand cmd3 = new OracleCommand();
cmd3.CommandType = CommandType.StoredProcedure;
cmd3.CommandText = "SP_LPI_REGISTER_CLAIM_DETAILS";
cmd3.Connection = conn;
cmd3.Parameters.Add("vLPI_ID", OracleType.VarChar, 20).Value = LPI_ID;
cmd3.Parameters.Add("vClaimDetails", OracleType.Cursor).Direction = ParameterDirection.Output;
//connection2.Open();
var SearchAdapter = new OracleDataAdapter(cmd3);
var ds = new DataSet();
SearchAdapter.Fill(ds);
DataGrid_ClaimDetail.DataSource = ds;
DataGrid_ClaimDetail.DataBind();
// The problem happens here:
DataGrid_ClaimDetail.Columns["Item"].DisplayIndex = 0;
DataGrid_ClaimDetail.Columns["dt"].DisplayIndex = 1;
DataGrid_ClaimDetail.Columns["UserName"].DisplayIndex = 2;
if (DataGrid_ClaimDetail.Items.Count < 1)
{
lblEmpty2.Visible = true;
lblEmpty2.Text = "There is no data to display";
}
else
{
lblEmpty2.Visible = false;
}
conn.Close();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
conn.Close();
}
}
Я получил следующее DataGrid в asp.net:
<div id="divGrid2" style='width:920px; height:230px; overflow:auto;'>
<asp:DataGrid ID="DataGrid_ClaimDetail" runat="server" Visible="true"
AllowPaging="True" AllowSorting="True" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="true"
OnCancelCommand="DataGrid_ClaimDetail_CancelCommand"
OnUpdateCommand="DataGrid_ClaimDetail_UpdateCommand"
OnEditCommand="DataGrid_ClaimDetail_EditCommand">
<AlternatingItemStyle Font-Bold="False" Font-Italic="False"
Font-Overline="False" Font-Strikeout="False" Font-Underline="False" />
<EditItemStyle BackColor="#999999" Font-Bold="False" Font-Italic="False"
Font-Overline="False" Font-Strikeout="False" Font-Underline="False" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="False" Font-Italic="False"
Font-Overline="False" Font-Strikeout="False" Font-Underline="False" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="False" Font-Italic="False"
Font-Overline="False" Font-Strikeout="False" Font-Underline="False" />
<PagerStyle BackColor="#5D7B9D" Font-Bold="False" Font-Italic="False"
Font-Overline="False" Font-Strikeout="False" Font-Underline="False" />
<SelectedItemStyle BackColor="#E2DED6" Font-Bold="False" Font-Italic="False"
Font-Overline="False" Font-Strikeout="False" Font-Underline="False" />
<Columns>
<asp:EditCommandColumn ButtonType="PushButton" CancelText="Cancel"
EditText="Select" UpdateText="Update"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>
<asp:Label ID="lblEmpty2" runat="server" Visible="false" Style="font-weight:bold; font-size:large;"></asp:Label>
</div>
Если я вынимаю 3 DisplayIndex строки в C# код, он отлично работает, но мои поля не в том порядке, который я бы хотел.
Если я ставлю эти строки обратно, я получаю сообщение об ошибке на каждой строке кода:
не может конвертировать из «строка» до «межд»
и каждого из имен полей подчеркивается.
Может ли кто-нибудь увидеть, что я могу делать неправильно, или скажите, как я могу переопределить поля в GridView?
В отношении первой части; ** «DataGridColumn» не содержит определения для «DisplayIndex», и не существует метода расширения «DisplayIndex», принимающего первый аргумент типа «DataGridColumn» (вам не хватает директивы using или ссылки на сборку?) ** –
@JohnyBones Хмм, я фактически не проверял код, предполагая, что такое свойство существует. В таком случае вам, вероятно, придется вручную изменить порядок столбцов, удалив/добавив их из коллекции 'Columns'. И я постараюсь получить рабочий прототип, когда у меня будет время, возможно, завтра. –
После небольшого поиска в Google, похоже, это работает только в Windows.Forms, тогда как я использую это на веб-сайте Intranet? –