
Хорошо, поэтому я полностью создал обзор данных и разрешил редактирование столбца, как показано на рисунке ниже.Затем я хочу написать событие щелчка для ссылки редактирования, чтобы при щелчке по нему можно было редактировать только столбец исследователя.В этом случае, когда могут быть внесены изменения, я хочу, чтобы в столбце исследователей отображался раскрывающийся список исследователей, которых можно выбрать, и этот выбранный элемент должен быть связан со строкой, по которой была нажата ссылка для редактирования.
У меня естьисточник данных для отображения идентификатора исследователя интересует только, где написать код для клика даже ссылки редактирования и заставить его творить чудеса.
Позволяет работать некоторым волшебникам .. :) Тогда я снова подумал и лучшеИдея возникла, поскольку мне нужно только передать идентификатор исследователя в базу данных для обновления, я отредактировал дизайн следующим образом (см. рисунок ниже), поэтому вместо того, чтобы отображать тип экспоната и изображение в виде сетки, я скорее вызовупросто идентификатор экспоната, которому будет назначен идентификатор исследователя, имеет больше смысла, если взглянуть на приведенную ниже базу данных:
, хотя она и не заполнена полностью, но концепция базы данных такова: 1.один случай может быть связан с более чем одним экспонатом (так сказать, один случай имеет много экспонатов, и каждому из этих экспонатов назначается следователь, который не может работать более чем с 3 экспонатами одновременно.
, поэтому вна этом этапе, когда следователи назначены для дела, caseID и подробности экспоната уже заполнены.Администратор, который открыл дело, уже будет иметь там свой идентификатор, а менеджер, которому еще предстоит назначить дело, будет иметь свой идентификатор и следователи.Идентификатор, который будет назначен полям.
Глядя на мой второй дизайн, я смог создать сетку для отображения только тех исследователей, которые работают над двумя или менее экспонатами. Это означает, что они доступны для назначения напо крайней мере, еще один экспонат, поэтому для выполнения назначения я выбираю CaseID из раскрывающегося списка, который детализирует все случаи из таблицы дел (не показана здесь), и на основе выбранного случая я отображаю все экспонаты, связанные с выбранным casedID.оттуда пользователь может выбрать одну выставкуt из выпадающего списка, а затем выберите любого из доступных следователей для назначения.так что все, что мне нужно сделать сейчас, - это когда пользователь нажимает кнопку назначения, я хочу знать, где и как я могу сделать идентификатор исследователей, для которого была нажата кнопка назначения, переданным в таблицу экспонатов в качестве обновления, и этот gridvire (userID,Имя пользователя (список исследователей) должно быть обновлено таким образом, чтобы в случае, если недавно просмотренный идентификатор исследователя достиг порога из трех экспонатов, их идентификатор и имя исследователя не отображаются.и в то же время уже назначенный экспонат также больше не отображается в раскрывающемся списке.Таким образом, по сути, нажимается кнопка «Назначить», и идентификатор рядом с ним отправляется в таблицу экспонатов для обновления, а представление сетки вместе с выпадающим списком экспонатов обновляется.
проблем с представлением сетки не должно быть, посколькуего данные напрямую связаны, так что простая функция exititgridview.databind () должна сработать, и, возможно, вызов метода, который ранее заполнял список экспонатов, также обновит выпадающий список ...
, поэтому проблема здесь сейчаскак получить коды за кнопкой назначить клик для этого события.Ниже приведен прилагаемый код для главных страниц (с использованием вложенной главной страницы), а также код и файл .cs для текущей страницы, где это должно происходить.
Код первой главной страницы (SITE.MASTER)позади
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Prototype5.SiteMaster" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head id="Head1" runat="server">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
// $(function () {
// $("#showOpenCasePage").click(function () {
// $("#CaseMainPanel").load("/EntryForms/OpenCase.aspx");
// });
// $("#showAddExhibitPage").click(function () {
// $("#CaseMainPanel").load("/EntryForms/AddExhibit.aspx");
// });
// $("#showOpenCasePage").click(function () {
// $("#CaseManagementMainPanel").load("/EntryForms/OpenCase.aspx");
// });
// $("#showAddExhibitPage").click(function () {
// $("#CaseManagementMainPanel").load("/EntryForms/AddExhibit.aspx");
// });
// $("#showAllocateOfficerPage").click(function () {
// $("#CaseManagementMainPanel").load("/EntryForms/AllocateOfficer.aspx");
// });
// $("#showReallocateOfficerPage").click(function () {
// $("#CaseManagementMainPanel").load("/EntryForms/ReallocateOfficer.aspx");
// });
// $("#showPrioritizeCasePage").click(function () {
// $("#CaseManagementMainPanel").load("/EntryForms/CasePriority.aspx");
// });
// $("#showRecordFindingPage").click(function () {
// $("#InvestigatorMainPanel").load("/EntryForms/RecordFinding.aspx");
// });
// $("#showUpdateStatusPage").click(function () {
// $("#InvestigatorMainPanel").load("/EntryForms/UpdateStatus.aspx");
// });
// });
</script>
<title></title>
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
<script type="text/javascript">
function updateClock() {
var currentTime = new Date();
var currentHours = currentTime.getHours();
var currentMinutes = currentTime.getMinutes();
var currentSeconds = currentTime.getSeconds();
// Pad the minutes and seconds with leading zeros, if required
currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes;
currentSeconds = (currentSeconds < 10 ? "0" : "") + currentSeconds;
// Choose either "AM" or "PM" as appropriate
var timeOfDay = (currentHours < 12) ? "AM" : "PM";
// Convert the hours component to 12-hour format if needed
currentHours = (currentHours > 12) ? currentHours - 12 : currentHours;
// Convert an hours component of "0" to "12"
currentHours = (currentHours == 0) ? 12 : currentHours;
// Compose the string for display
var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds + " " + timeOfDay;
// Update the time display
document.getElementById("clock").firstChild.nodeValue = currentTimeString;
}
</script>
<style type="text/css">
.style1
{
width: 213px;
}
.menu
{}
.style2
{
width: 100%;
}
.style3
{
width: 264px;
}
.style4
{
width: 291px;
}
</style>
</head>
<body onload="updateClock(); setInterval('updateClock()', 1000 )">
<form id="Form1" runat="server">
<div class="page">
<div class="header">
<div class="title">
<span style="font-size: 5em; font-family:Old English Text MT; color: #FF6600;"><strong>Case Management System</strong></span>
</div>
<div class="clock">
<span id="clock"> </span>
</div>
<div class="clear hideSkiplink">
<table class="style2">
<tr>
<td class="style4" align="center">
<asp:LoginView ID="MasterLoginView" runat="server">
<LoggedInTemplate>
Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" />
[ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/Logout.aspx"/> ]
<%--Welcome:
<span class="bold"><asp:LoginName ID="MasterLoginName" runat="server" /> </span>!--%>
</LoggedInTemplate>
<AnonymousTemplate>
Welcome: Guest
[ <a href="Account/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> ]
</AnonymousTemplate>
</asp:LoginView>
</td>
<td class="style3">
</td>
<td valign="top">
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="False"
IncludeStyleBlock="False" Orientation="Horizontal" Height="36px" Width="120px">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"
ImageUrl="~/Images/homeIcon.png"/>
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About"
ImageUrl="~/Images/aboutIcon.png"/>
<asp:MenuItem ImageUrl="~/Images/contactUsIcon.png" NavigateUrl="~/ContactUs.aspx"
Text="Contact Us" Value="Contact Us"></asp:MenuItem>
</Items>
</asp:Menu>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="page" style="margin-top:5px;height:auto;">
<div style="border-style:solid;">
<table style="width:100%; background-color:#3a4f63">
<tr>
<td class="style1" valign="top">
<p style="padding-left: 4px; padding-right:4px;">
<asp:Button ID="functionButton" runat="server" Text="System Functions"
class="fnctButton" Height="41px" Width="192px" />
<asp:ContentPlaceHolder ID="LeftNavigation" runat="server">
</asp:ContentPlaceHolder>
</p>
</td>
<td rowspan="2" valign="top" align="center">
<asp:ContentPlaceHolder ID="MainContent" runat="server"/>
</td>
</tr>
<tr>
<td class="style1" align="left" valign="top">
<asp:ContentPlaceHolder ID="RightNewsItem" runat="server"/>
</td>
</tr>
</table>
</div>
</div>
<div class="clear">
</div>
<div class="footer">
<span style="font-size: small;color: #FFFFFF;"><strong>Copyright 2011 JustRite Software Inc.</strong></span></div>
</form>
</body>
</html>
Вторая главная страница на основе первой (Manage.Master)
<%@ Master Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Manager.master.cs" Inherits="Prototype5.Manager" %>
<asp:Content ID="ManagerHead" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="ManagerLeft" ContentPlaceHolderID="LeftNavigation" runat="server">
<div style="margin-top:20px; margin-bottom:20px;">
<p class="actionButton">
<asp:Button ID="allocateInvestigatorsButton" runat="server"
Text="Allocate Investigators" height="30px" width="135px"
onclick="allocateInvestigatorsButton_Click" />
</p>
<p class="actionButton">
<asp:Button ID="realocateInvestigatorsButton" runat="server"
Text="Reallocate Investigators" Height="30px" Width="135px"
onclick="realocateInvestigatorsButton_Click" />
</p>
<p class="actionButton">
<asp:Button ID="prioritizeCaseButton" runat="server"
Text="Prioritize Case" height="30px" width="135px"
onclick="prioritizeCaseButton_Click" />
</p>
<p class="actionButton">
<asp:Button ID="openCaseButton" runat="server"
Text="Open Case" height="30px" width="135px"
onclick="openCaseButton_Click" />
</p>
<p class="actionButton">
<asp:Button ID="registerExhibitButton" runat="server"
Text="Register Exhibit" height="30px" width="135px"
onclick="registerExhibitButton_Click" />
</p>
</div>
</asp:Content>
<asp:Content ID="ManagerMain" ContentPlaceHolderID="MainContent" runat="server">
<asp:ContentPlaceHolder ID="MainContent" runat="server"/>
</asp:Content>
<asp:Content ID="ManagerRight" ContentPlaceHolderID="RightNewsItem" runat="server">
<asp:Button ID="AlertButton" runat="server" Text="Alerts"
class="fnctButton" Height="25px" Width="70px" />
<div style="border-style: none; border-color: inherit; border-width: medium; width:210px; height: 103px;">
<p style="text-align: justify; font-size:1.2em; color:White; width: 209px; height: 95px;">
This is a place holder for allerts about cases to which the investigator has been assigned to.
</p>
</div>
</asp:Content>
Текущая страница, содержащая элементы на основе второй главной страницы на основе второй главной страницы
<%@ Page Title="" Language="C#" MasterPageFile="~/Manager.master" AutoEventWireup="true" CodeBehind="AllocateInvestigators.aspx.cs" Inherits="Prototype5.AllocateInvestigators" %>
<asp:Content ID="AllocateInvestigatorsMain" ContentPlaceHolderID="MainContent" runat="server">
<div>
<table class="style2">
<tr>
<td colspan="4" style="background-color: #C0C0C0">
</td>
</tr>
<tr>
<td class="style1"
style="width: 79px; color: #000000; background-color: #666666;">
<strong>Case ID:</strong></td>
<td align="left" class="style1" style="width: 187px">
<asp:DropDownList ID="caseIDDropDownList" runat="server" Height="22px"
Width="116px" DataSourceID="distinctCaseIDSqlDataSource"
DataTextField="CaseID" DataValueField="CaseID"
onselectedindexchanged="caseIDDropDownList_SelectedIndexChanged">
</asp:DropDownList>
<asp:SqlDataSource ID="distinctCaseIDSqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:CMSSQL3ConnectionString1 %>" SelectCommand="SELECT DISTINCT CaseID FROM Exhibits
WHERE InvestigatorID = NULL"></asp:SqlDataSource>
</td>
<td class="style3"
style="width: 119px; color: #000000; background-color: #666666;">
<strong>Case Priority:</strong></td>
<td align="left">
<asp:DropDownList ID="casePriorityDropDownList" runat="server" height="22px"
width="116px">
<asp:ListItem>Low</asp:ListItem>
<asp:ListItem>Medium</asp:ListItem>
<asp:ListItem>High</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td colspan="4" style="background-color: #C0C0C0">
</td>
</tr>
</table>
</div>
<div>
<table class="style2">
<tr>
<td style="width: 79px; color: #000000;">
<strong>Exhibit ID:</strong></td>
<td align="left">
<asp:DropDownList ID="exhibitsDropDownList" runat="server" height="22px"
onselectedindexchanged="exhibitsDropDownList_SelectedIndexChanged"
width="116px">
</asp:DropDownList>
<asp:SqlDataSource ID="exhibitIDSqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:CMSSQL3ConnectionString1 %>"
SelectCommand="SELECT ExhibitID FROM Exhibits"></asp:SqlDataSource>
</td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
</table>
</div>
<div>
<table class="style2">
<tr>
<td>
<asp:GridView ID="exhibitGridView" runat="server" AutoGenerateColumns="False"
CellPadding="4" DataKeyNames="UserID" DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display." ForeColor="#333333"
GridLines="None" Height="241px"
onselectedindexchanged="GridView1_SelectedIndexChanged" Width="323px"
style="margin-right: 0px">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="UserID" HeaderText="UserID" ReadOnly="True"
SortExpression="UserID" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:ButtonField ButtonType="Button" CommandName="Select" Text="Assign" />
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<SortedAscendingCellStyle BackColor="#FDF5AC" />
<SortedAscendingHeaderStyle BackColor="#4D0000" />
<SortedDescendingCellStyle BackColor="#FCF6C0" />
<SortedDescendingHeaderStyle BackColor="#820000" />
</asp:GridView>
<asp:SqlDataSource ID="assignInvestigatorsSqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:CMSSQL3ConnectionString1 %>"
SelectCommand="SELECT ExhibitID, ExhibitType, ExhibitImage, InvestigatorID FROM Exhibits">
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:CMSSQL3ConnectionString1 %>"
DeleteCommand="DELETE FROM [Exhibits] WHERE [ExhibitID] = @ExhibitID AND [CaseID] = @CaseID"
InsertCommand="INSERT INTO [Exhibits] ([CaseID], [ExhibitType], [DateReceived], [StoredLocation], [OfficerID], [SuspectID], [InvestigatorID], [ManagerID], [AdminID]) VALUES (@CaseID, @ExhibitType, @DateReceived, @StoredLocation, @OfficerID, @SuspectID, @InvestigatorID, @ManagerID, @AdminID)"
ProviderName="<%$ ConnectionStrings:CMSSQL3ConnectionString1.ProviderName %>"
SelectCommand="SELECT UserID, UserName
FROM Users
WHERE UserID IN (SELECT UserID
FROM Users
WHERE UserType LIKE 'Investigator'
AND UserID NOT IN (SELECT InvestigatorID
From Exhibits
GROUP BY (InvestigatorID)
HAVING COUNT(InvestigatorID) > 2));"
UpdateCommand="UPDATE [Exhibits] SET [ExhibitType] = @ExhibitType, [DateReceived] = @DateReceived, [StoredLocation] = @StoredLocation, [OfficerID] = @OfficerID, [SuspectID] = @SuspectID, [InvestigatorID] = @InvestigatorID, [ManagerID] = @ManagerID, [AdminID] = @AdminID WHERE [ExhibitID] = @ExhibitID AND [CaseID] = @CaseID">
<DeleteParameters>
<asp:Parameter Name="ExhibitID" Type="Int32" />
<asp:Parameter Name="CaseID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="CaseID" Type="Int32" />
<asp:Parameter Name="ExhibitType" Type="String" />
<asp:Parameter Name="DateReceived" Type="DateTime" />
<asp:Parameter Name="StoredLocation" Type="String" />
<asp:Parameter Name="OfficerID" Type="String" />
<asp:Parameter Name="SuspectID" Type="Int32" />
<asp:Parameter Name="InvestigatorID" Type="String" />
<asp:Parameter Name="ManagerID" Type="String" />
<asp:Parameter Name="AdminID" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="ExhibitType" Type="String" />
<asp:Parameter Name="DateReceived" Type="DateTime" />
<asp:Parameter Name="StoredLocation" Type="String" />
<asp:Parameter Name="OfficerID" Type="String" />
<asp:Parameter Name="SuspectID" Type="Int32" />
<asp:Parameter Name="InvestigatorID" Type="String" />
<asp:Parameter Name="ManagerID" Type="String" />
<asp:Parameter Name="AdminID" Type="String" />
<asp:Parameter Name="ExhibitID" Type="Int32" />
<asp:Parameter Name="CaseID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
</td>
</tr>
</table>
</div>
<div>
<table class="style2">
<tr>
<td>
</td>
<td>
</td>
</tr>
</table>
</div>
</asp:Content>
И, наконец, файл .cs текущей страницы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
namespace Prototype5
{
public partial class AllocateInvestigators : System.Web.UI.Page
{
SqlConnection caseConnection = new SqlConnection();
SqlConnection exhibitConnection = new SqlConnection();
DataSet caseDataSet = new DataSet();
DataSet exhibitDataSet = new DataSet();
SqlDataAdapter caseSqlDataAdapter = new SqlDataAdapter();
SqlDataAdapter exhibitSqlDataAdapter = new SqlDataAdapter();
protected void Page_Load(object sender, EventArgs e)
{
//exhibitGridView.Enabled = false;
}
protected void caseIDDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
exhibitGridView.Enabled = true;
string selectedCaseID = caseIDDropDownList.SelectedItem.Text.ToString();
CreateExhibitDataset();
DataView exhibitDataView = new DataView(exhibitDataSet.Tables[0]);
exhibitDataView.RowFilter = "CaseID = '" + selectedCaseID + "' ";
exhibitsDropDownList.DataSource = exhibitDataView;
exhibitsDropDownList.DataBind();
}
private void CreateDataSet()
{
caseConnection.ConnectionString =
distinctCaseIDSqlDataSource.ConnectionString;
caseSqlDataAdapter.SelectCommand = new
SqlCommand(distinctCaseIDSqlDataSource.SelectCommand, caseConnection);
caseSqlDataAdapter.Fill(caseDataSet);
}
private void CreateExhibitDataset()
{
exhibitConnection.ConnectionString =
exhibitIDSqlDataSource.ConnectionString;
exhibitSqlDataAdapter.SelectCommand = new
SqlCommand(exhibitIDSqlDataSource.SelectCommand, caseConnection);
exhibitSqlDataAdapter.Fill(exhibitDataSet);
}
}
}
Рассчитываю на вашу помощь ... @ _ @ ...
1036 **