У меня есть GridView, который извлекает данные из базы данных. Пользователи имеют роли, некоторые из пользователей будут обновлять один столбец в GridView, а другие будут обновлять другие столбцы в соответствии с ролями, см. Код ниже !. Я создал хранимые процедуры, как показано ниже, и добавил код. Когда я тестировал проект с ролью (AR-Translator) в качестве примера после редактирования столбца в виде сетки, он заменяет другие значения со значением NULL, поэтому, пожалуйста, что я могу сделать?update specfic column в виде сетки
хранимая процедура
ALTER Proc [dbo].[GetAllTranslation]
AS
BEGIN
Select Id,Word
,Trans_AR
,Trans_EN
,Add_Date
From Translation
END
ALTER Proc [dbo].[UpdateTranslation]
(
@IdINT
,@Word NVARCHAR(MAX)
,@Trans_AR NVARCHAR(MAX)
,@Trans_EN NVARCHAR(MAX)
)
AS
BEGIN
UPDATE Translation SET
Word [email protected]
,[email protected]_AR
,[email protected]_EN
WHERE [email protected]
END
ASPX страница
<div class="m10">
<asp:GridView ID="GridView1" runat="server" BackColor="White"
BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4"
ForeColor="Black" GridLines="Vertical" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Id"
DataSourceID="SDSTrans" onrowupdated="GridView1_RowUpdated">
<FooterStyle BackColor="#CCCC99" />
<RowStyle BackColor="#F7F7DE" />
<Columns>
<asp:CommandField HeaderText="Function" ShowEditButton="True" />
<asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False"
ReadOnly="True" SortExpression="Id" />
<asp:BoundField DataField="Word" HeaderText="Word" SortExpression="Word" />
<asp:BoundField DataField="Trans_AR" HeaderText="Trans_AR"
SortExpression="Trans_AR" />
<asp:BoundField DataField="Trans_EN" HeaderText="Trans_EN"
SortExpression="Trans_EN" />
<asp:BoundField DataField="Add_Date" HeaderText="Add_Date"
SortExpression="Add_Date" />
</Columns>
<PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
<SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<asp:SqlDataSource ID="SDSTrans" runat="server"
ConnectionString="Data Source=ELARABY-1EACFA3\SQLEXPRESS;Initial Catalog=ElarabyGroup;Integrated Security=True"
ProviderName="System.Data.SqlClient" SelectCommand="GetAllTranslation"
SelectCommandType="StoredProcedure" UpdateCommand="UpdateTranslation"
UpdateCommandType="StoredProcedure">
<UpdateParameters>
<asp:ControlParameter ControlID="GridView1" Name="Id"
PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter ControlID="GridView1" Name="Word"
PropertyName="SelectedValue" Type="String" />
<asp:ControlParameter ControlID="GridView1" Name="Trans_AR"
PropertyName="SelectedValue" Type="String" />
<asp:ControlParameter ControlID="GridView1" Name="Trans_EN"
PropertyName="SelectedValue" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:Label ID="ResultLBL" runat="server" Visible="false"></asp:Label>
</div>
CS
public void CheckLoginAuthorty()
{
using (SqlConnection Con = Connection.GetConnection())
{
SqlCommand com = new SqlCommand("CheackLoginInRole", Con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add(Parameter.NewNVarChar("@Login", Session.Contents["Username"].ToString()));
object O = com.ExecuteScalar();
if (O != null)
{
string S = O.ToString();
if (IsInRole("AR-Translator", O.ToString()))
{
((BoundField)GridView1.Columns[2]).ReadOnly = false;
((BoundField)GridView1.Columns[2]).InsertVisible = false;
((BoundField)GridView1.Columns[4]).ReadOnly = false;
((BoundField)GridView1.Columns[4]).InsertVisible = false;
}
else if (IsInRole("EN-Translator", O.ToString()))
{
((BoundField)GridView1.Columns[2]).ReadOnly = true;
((BoundField)GridView1.Columns[2]).InsertVisible = false;
((BoundField)GridView1.Columns[3]).ReadOnly = true;
((BoundField)GridView1.Columns[3]).InsertVisible = false;
}
}
}
}
Могли бы вы уточнить quesiton немного больше? Не могу понять, что вы спрашиваете ... вы хотите вручную обновить столбцы gridview? – mint
похоже, что у него проблемы с нулевыми символами ... или, возможно, с его удалением столбца? Надеюсь, я правильно перевел .. – Nix
Я отредактировал вопрос, который, я думаю, вы поймете – Myworld