My GridViewには、レコードがアクティブかどうかを示す「アクティブ」チェックボックスがあります。これは単なるフラグであり、データベースのビット値です。1つの列のCheckBoxに基づいて特定のGridView列を更新する方法
ユーザーがCheckBoxをチェックしたりチェックしたりしたとき(編集モードで)、 "ActivatedBy"フィールドと "DeactivatedBy"フィールドを更新する必要があります。
現在、行が更新されるたびに「UpdatedBy」フィールドが更新され、@UserNameで埋められます。
しかし、ActivBoxまたはDeactivatedByフィールドのいずれかをプログラムで更新する方法がわからないのは、CheckBoxがそれぞれチェックされているかチェックされていない場合だけです。これは、誰がチェックボックスを変更したかを記録することです(@UserNameは作業パラメータです)。
私には詳細が必要です。私がやります。 ;-)私はC#を学んでいますし、GridViewsは私の悩みです。ありがとうございました!
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Admin.aspx.cs" Inherits="Admin" MaintainScrollPositionOnPostback="true" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Admin</title>
<style>
body {
font-family:Arial;
font-size:12px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="programid" DataSourceID="ITAAdminSqlDataSource" ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:CommandField ShowEditButton="True" ShowSelectButton="True" />
<asp:BoundField DataField="programid" HeaderText="programid" InsertVisible="False" ReadOnly="True" SortExpression="programid" Visible="False" />
<asp:BoundField DataField="OccGroup" HeaderText="Occ Group" SortExpression="OccGroup" />
<asp:BoundField DataField="Provider" HeaderText="Provider" SortExpression="Provider" />
<asp:BoundField DataField="Program" HeaderText="Program" SortExpression="Program" />
<asp:BoundField DataField="OnetCode" HeaderText="Onet Code" SortExpression="OnetCode" />
<asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" />
<asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
<asp:BoundField DataField="Telephone" HeaderText="Telephone" SortExpression="Telephone" >
<ItemStyle Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="TuitionCosts" DataFormatString="{0:c}" HeaderText="Tuition" HtmlEncode="False" SortExpression="TuitionCosts" />
<asp:BoundField DataField="OtherCosts" DataFormatString="{0:c}" HeaderText="Other Costs" HtmlEncode="False" SortExpression="OtherCosts" />
<asp:BoundField DataField="SpecialConditions" HeaderText="Special Conditions" SortExpression="SpecialConditions" />
<asp:BoundField DataField="Credential" HeaderText="Credential" SortExpression="Credential" />
<asp:CheckBoxField DataField="Active" HeaderText="Active" SortExpression="Active" />
<asp:BoundField DataField="DateEntered" DataFormatString="{0:d}" HeaderText="Date Entered" HtmlEncode="False" SortExpression="DateEntered" />
<asp:BoundField DataField="EnteredBy" HeaderText="Entered By" SortExpression="EnteredBy" />
<asp:BoundField DataField="DateUpdated" DataFormatString="{0:d}" HeaderText="Date Updated" HtmlEncode="False" SortExpression="DateUpdated" />
<asp:BoundField DataField="UpdatedBy" HeaderText="Updated By" SortExpression="UpdatedBy" />
<asp:BoundField DataField="DateActivated" DataFormatString="{0:d}" HeaderText="Date Activated" HtmlEncode="False" SortExpression="DateActivated" />
<asp:BoundField DataField="ActivatedBy" HeaderText="Activated By" SortExpression="ActivatedBy" />
<asp:BoundField DataField="DateDeactivated" DataFormatString="{0:d}" HeaderText="Date Deactivated" HtmlEncode="False" SortExpression="DateDeactivated" />
<asp:BoundField DataField="DeactivatedBy" HeaderText="Deactivated By" SortExpression="DeactivatedBy" />
</Columns>
<EditRowStyle BackColor="Tomato" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
<asp:SqlDataSource ID="ITAAdminSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ITAAdminConnectionString %>"
DeleteCommand="DELETE FROM [programs] WHERE [programid] = @programid"
InsertCommand="INSERT INTO [programs] ([OccGroup], [Provider], [Program], [OnetCode], [Address], [City], [Telephone], [TuitionCosts], [OtherCosts], [SpecialConditions], [Credential], [Active], [DateEntered], [EnteredBy], [DateUpdated], [UpdatedBy], [DateActivated], [ActivatedBy], [DateDeactivated], [DeactivatedBy]) VALUES (@OccGroup, @Provider, @Program, @OnetCode, @Address, @City, @Telephone, @TuitionCosts, @OtherCosts, @SpecialConditions, @Credential, @Active, @DateEntered, @EnteredBy, @DateUpdated, @UpdatedBy, @DateActivated, @ActivatedBy, @DateDeactivated, @DeactivatedBy)"
SelectCommand="SELECT [programid], [OccGroup], [Provider], [Program], [OnetCode], [Address], [City], [Telephone], [TuitionCosts], [OtherCosts], [SpecialConditions], [Credential], [Active], [DateEntered], [EnteredBy], [DateUpdated], [UpdatedBy], [DateActivated], [ActivatedBy], [DateDeactivated], [DeactivatedBy] FROM [programs] ORDER BY [Provider], [Program]"
UpdateCommand="UPDATE [programs] SET [OccGroup] = @OccGroup, [Provider] = @Provider, [Program] = @Program, [OnetCode] = @OnetCode, [Address] = @Address, [City] = @City, [Telephone] = @Telephone, [TuitionCosts] = @TuitionCosts, [OtherCosts] = @OtherCosts, [SpecialConditions] = @SpecialConditions, [Credential] = @Credential, [Active] = @Active, [DateEntered] = @DateEntered, [EnteredBy] = @EnteredBy, [DateUpdated] = GETDATE(), [UpdatedBy] = @UserName, [DateActivated] = @DateActivated, [ActivatedBy] = @ActivatedBy, [DateDeactivated] = @DateDeactivated, [DeactivatedBy] = @DeactivatedBy WHERE [programid] = @programid">
<DeleteParameters>
<asp:Parameter Name="programid" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="OccGroup" Type="String" />
<asp:Parameter Name="Provider" Type="String" />
<asp:Parameter Name="Program" Type="String" />
<asp:Parameter Name="OnetCode" Type="Int32" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="Telephone" Type="String" />
<asp:Parameter Name="TuitionCosts" Type="Decimal" />
<asp:Parameter Name="OtherCosts" Type="Decimal" />
<asp:Parameter Name="SpecialConditions" Type="String" />
<asp:Parameter Name="Credential" Type="String" />
<asp:Parameter Name="Active" Type="Boolean" />
<asp:Parameter DbType="Date" Name="DateEntered" />
<asp:Parameter Name="EnteredBy" Type="String" />
<asp:Parameter DbType="Date" Name="DateUpdated" />
<asp:Parameter Name="UpdatedBy" Type="String" />
<asp:Parameter Name="username" Type="String" DefaultValue="Anonymous" /> <%-- username parameter filled in Page_Init. use @username instead of UpdatedBy, ActivatedBy, etc. --%>
<asp:Parameter DbType="Date" Name="DateActivated" />
<asp:Parameter Name="ActivatedBy" Type="String" />
<asp:Parameter DbType="Date" Name="DateDeactivated" />
<asp:Parameter Name="DeactivatedBy" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="OccGroup" Type="String" />
<asp:Parameter Name="Provider" Type="String" />
<asp:Parameter Name="Program" Type="String" />
<asp:Parameter Name="OnetCode" Type="Int32" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="Telephone" Type="String" />
<asp:Parameter Name="TuitionCosts" Type="Decimal" />
<asp:Parameter Name="OtherCosts" Type="Decimal" />
<asp:Parameter Name="SpecialConditions" Type="String" />
<asp:Parameter Name="Credential" Type="String" />
<asp:Parameter Name="Active" Type="Boolean" />
<asp:Parameter DbType="Date" Name="DateEntered" />
<asp:Parameter Name="EnteredBy" Type="String" />
<asp:Parameter DbType="Date" Name="DateUpdated" />
<asp:Parameter Name="UpdatedBy" Type="String" />
<asp:Parameter Name="username" Type="String" DefaultValue="Anonymous" /> <%-- username parameter filled in Page_Init. use @username instead of UpdatedBy, ActivatedBy, etc. --%>
<asp:Parameter DbType="Date" Name="DateActivated" />
<asp:Parameter Name="ActivatedBy" Type="String" />
<asp:Parameter DbType="Date" Name="DateDeactivated" />
<asp:Parameter Name="DeactivatedBy" Type="String" />
<asp:Parameter Name="programid" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Admin : System.Web.UI.Page
{
protected string ClearDomain(string sItem) //Format username without domain
{
int sLoc = (sItem.IndexOf("\\") + 1);
string sOutPut;
sOutPut = sItem.Substring(sLoc);
return sOutPut;
}
protected void Page_Load(object sender, EventArgs e)
{
//string usr;
//usr = ClearDomain(User.Identity.Name.ToString());
}
protected void Page_Init(object sender, EventArgs e)
{
ITAAdminSqlDataSource.InsertParameters["UserName"].DefaultValue = ClearDomain(User.Identity.Name.ToString());
ITAAdminSqlDataSource.UpdateParameters["UserName"].DefaultValue = ClearDomain(User.Identity.Name.ToString());
}
}
、VDWWDをありがとう!それは大いに役立ちます。私はまた、 "ActivatedBy"に加えて "DeactivatiedBy"をログに記録する必要がありますが、私はあなたが私に与えたものでその条件を理解することができると思います。私はこの部分を設定して戻ってくると、私は質問に遭遇しない場合はあなたの答えを受け入れる。 –
ああ、私はすべての編集をしているだけでなく、FormViewで行われた挿入は、GridViewのEdit LinkButtonを表示していません。私はそれがまったく同じだと仮定します。 ... FormViewにTemplateFieldを追加してください... –
ああ、実際にはそれより簡単です... FormViewはすでにEditItemTemplateを持っています:-)うーん、コードの背後にあるコードのようにいくつかの重要な変更が必要です。 ...それに取り組んで... –