Ich arbeite an einem System, das nach Personen sucht, zeigt dann alle, die die relevanten Suchkriterien darunter in einem GridView passen, aber keine Daten werden angezeigt und es ist wirklich frustrierend. Dies ist das Panel/gridview von PatientSearch.aspxGridView zeigt keine Daten in einem Panel an
<asp:UpdatePanel ID="pnlUpdate" runat="server">
<ContentTemplate>
<asp:Panel ID="pnlResults" runat="server" ScrollBars="Auto" >
<asp:GridView ID="gvSearch" runat="server" Font-Names = "Arial" Font-Size = "11pt" ForeColor = "#000000"
onselectedindexchanged="gvSearch_SelectedIndexChanged" AutoGenerateColumns = "false" DataKeyNames="patientid" AllowPaging = "true"
OnPageIndexChanging = "OnPaging" PageSize = "10" Width = "100%" HeaderStyle-BackColor = "#465c71" HeaderStyle-ForeColor = "#ffffff">
<Columns>
<%--Creates a select button that appear at the start of the grid view--%>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton Text="Select" ID="lnkSelect" runat="server" CommandName="Select" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="HC Number" ItemStyle-Wrap="False">
<ItemTemplate>
<%--This will be the first field to appear beside the select button--%>
<asp:Label ID="lblHCNum" Text='<%# Eval("HC_Number") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<%--Bound fields will place them in a specific order--%>
<asp:BoundField DataField = "PatientNumber" HeaderText="Patient Number"/>
<asp:BoundField DataField = "Surname" HeaderText="Surname"/>
<asp:BoundField DataField = "Forename" HeaderText="Forename"/>
<asp:BoundField DataField = "ReferredBy" HeaderText="Consultant" ItemStyle-Wrap="False" />
<asp:BoundField DataField = "Sex" HeaderText="Sex"/>
<asp:BoundField DataField = "DateOfBirth" HeaderText = "Date Of Birth" DataFormatString="{0:d}" />
<asp:BoundField DataField = "AppointmentDate" HeaderText = "Appointment Date" DataFormatString="{0:d}" />
</Columns>
</asp:GridView>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gvSearch" />
</Triggers>
</asp:UpdatePanel>
Dieser Code aus dem PatientSearch.aspx.cs für das Gridview ist etc
public partial class PatientSearch : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//As this is the first page the user will have contact with when logged in this is where the limits of what they can and cannot do
//Are created to be used on all pages
//Open connection to database
string constr = ConfigurationManager.ConnectionStrings["OepdSQLConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
//Select columns required
using (SqlCommand cmd = new SqlCommand("SELECT [RoleName], [AddPermission], [EditPermission], [DeletePermission] FROM aspnet_Roles"))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
//Fill required columns into datatable
sda.Fill(dt);
//Create stringbuilder to store RoleNames
StringBuilder addPermission = new StringBuilder();
StringBuilder editPermission = new StringBuilder();
StringBuilder deletePermission = new StringBuilder();
//Iterate through the datatable and add each correct row to the stringbuilder
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
DataRow dr = dt.Rows[i];
//only add the necessary rows to the string builder
if (dr["AddPermission"].ToString() == "True")
addPermission.AppendLine(string.Join(",", dr.ItemArray));
if (dr["EditPermission"].ToString() == "True")
editPermission.AppendLine(string.Join(",", dr.ItemArray));
if (dr["DeletePermission"].ToString() == "True")
deletePermission.AppendLine(string.Join(",", dr.ItemArray));
}
//Remove the unnecessary data from the string
addPermission.Replace(",True", ""); addPermission.Replace(",False", "");
editPermission.Replace(",True", ""); editPermission.Replace(",False", "");
deletePermission.Replace(",True", ""); deletePermission.Replace(",False", "");
//Convert stringbuilder to string to allow it to be compared
var add = addPermission.ToString();
var edit = editPermission.ToString();
var delete = deletePermission.ToString();
//Retrieve all roles the current user has access to
var userRoles = Roles.GetRolesForUser(User.Identity.Name);
if (!userRoles.Any(u => add.Contains(u)))
{
btnNewRecord.Enabled = false;
}
//Store what permissions are granted to which roles
Session["AddPermission"] = add;
Session["EditPermission"] = edit;
Session["DeletePermission"] = delete;
}
}
}
}
DataSet ds = (DataSet)Session["DS"];
// if (ds == null)
//{
//Make the menu inaccessable if no record has been selected, Due to menu being ambiguous System.Web.UI.WebControls is required
//System.Web.UI.WebControls.Menu MyMasterMenu = (System.Web.UI.WebControls.Menu)Master.FindControl("NavigationMenu");
//MyMasterMenu.Visible = false;
//}
//Hide the export buttons if the gridview is empty
if (gvSearch.DataSource == null)
{
//imgWord.Visible = false;
imgExcel.Visible = false;
lblExport.Visible = false;
}
else
{
//imgWord.Visible = true;
imgExcel.Visible = true;
lblExport.Visible = true;
}
//Hide label that catches any errors from user
lblErrors.Visible = false;
if (Session["RecordSuccessfullyDeleted"] != null)
{
//Message that has been passed from another page, informs the user that the record has ben successfully deleted
string deletedID = Session["RecordSuccessfullyDeleted"].ToString();
lblErrors.Text = deletedID + " Succesfully Deleted!";
//calls the popup to display a notification
dvMsg.Visible = true;
lblMsg.Text = "" + lblErrors.Text;
//To prevent message appearing multiple times
Session["RecordSuccessfullyDeleted"] = null;
}
else
{
dvMsg.Visible = false;
}
}
//Tells the page what to do once the user has selected a patient
protected void gvSearch_SelectedIndexChanged(object sender, EventArgs e)
{
DataSet ds = new DataSet();
int index = gvSearch.SelectedIndex;
string strConString = ConfigurationManager.ConnectionStrings["OepdSQLConnectionString"].ConnectionString;
SqlConnection myConnect = new SqlConnection(strConString);
myConnect.ConnectionString = strConString;
string strCommandText = "prcPersonalSelectedByPatientIdRetrieve";
try
{
SqlCommand sqlCmd = new SqlCommand(strCommandText, myConnect);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.Add(new SqlParameter("@PatientNumber", gvSearch.DataKeys[index].Value.ToString()));
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = sqlCmd;
da.Fill(ds, "personal");
//Needed to reset the clinical eval page for newly selected patient
Session["NDS"] = null;
}
catch (Exception fe)
{
lblMoreErrors.Text = "Error: " + fe.Message;
}
try
{
//Assigns the selected patients details to the dataset and redirects the user to the personal page
Session["DS"] = ds;
Response.Redirect("~/UserPages/PatientDetails.aspx");
}
catch (Exception er)
{
lblErrors.Text = "Error: " + er.Message;
}
}
//Tells the gridview what to do when the page change is selected
protected void OnPaging(object sender, GridViewPageEventArgs e)
{
this.DataBindSearch();
gvSearch.PageIndex = e.NewPageIndex;
gvSearch.DataBind();
}
protected void BtnResetSearch(object sender, EventArgs e)
{
//Deletes all current criteria enetered and refreshes the page
Session["ViewState"] = null;
Response.Redirect("~/UserPages/PatientSearch.aspx");
}
protected void BtnSearch(object sender, EventArgs e)
{
//Sets the panel properties after the button is clicked, this helps avoid the empty white
//space at the bottom if the property is assigned when nothing is there
pnlResults.Style.Add("height", "500px");
this.DataBindSearch();
}
protected void BtnAddPatient(object sender, EventArgs e)
{
Session.Remove("DS");
Response.Redirect("~/UserPages/AddPatient.aspx", false);
}
protected void DataBindSearch()
{
DataSet ds = new DataSet();
string strConString = ConfigurationManager.ConnectionStrings["OepdSQLConnectionString"].ConnectionString;
SqlConnection myConnect = new SqlConnection(strConString);
myConnect.ConnectionString = strConString;
string strCommandText = "prcPersonalByPatientIdSelect";
//Now allows partial searches eg. Surname: M will return all surnames with M in it
try
{
SqlCommand sqlCmd = new SqlCommand(strCommandText, myConnect);
sqlCmd.CommandType = CommandType.StoredProcedure;
if (txtPatientNumber.Text != "")
{
sqlCmd.Parameters.Add(new SqlParameter("@PatientNumber", txtPatientNumber.Text));
}
if (txtHCNumber.Text != "___-___-____")
{
sqlCmd.Parameters.Add(new SqlParameter("@HC_Number", txtHCNumber.Text));
}
if (txtPatientSurname.Text != "")
{
sqlCmd.Parameters.Add(new SqlParameter("@Surname", txtPatientSurname.Text));
}
if (txtPatientFirstName.Text != "")
{
sqlCmd.Parameters.Add(new SqlParameter("@Forename", txtPatientFirstName.Text));
}
if (dpdConsultant.Text != "")
{
sqlCmd.Parameters.Add(new SqlParameter("@Consultant", dpdConsultant.Text));
}
if (dpdSex.Text != "")
{
sqlCmd.Parameters.Add(new SqlParameter("@Sex", dpdSex.Text));
}
//Date of Birth Search
if (txtDateOfBirth.Text != "")
{
//Required for use of between dates
string dateDoB = txtDateOfBirth.Text;
DateTime date = Convert.ToDateTime(dateDoB);
sqlCmd.Parameters.Add(new SqlParameter("@DateOfBirth", date));
}
if (txtDateOfBirthTo.Text != "")
{
if (txtDateOfBirthTo.Text == "*")
{
//Carries out the funtion of the wildcard
DateTime now = DateTime.Now;
sqlCmd.Parameters.Add(new SqlParameter("@DateOfBirthEnd", now));
}
else
{
//Required for use of between dates
string dateDoB = txtDateOfBirthTo.Text;
DateTime date = Convert.ToDateTime(dateDoB);
sqlCmd.Parameters.Add(new SqlParameter("@DateOfBirthEnd", date));
}
}
//Diagnosis Date Search
if (txtDiagnosisDate.Text != "")
{
//Required for use of between dates
string dateDD = txtDiagnosisDate.Text;
DateTime date = Convert.ToDateTime(dateDD);
sqlCmd.Parameters.Add(new SqlParameter("@DiagnosisDate", date));
}
if (txtDiagnosisDateTo.Text != "")
{
if (txtDiagnosisDateTo.Text == "*")
{
//Carries out the funtion of the wildcard
DateTime now = DateTime.Now;
sqlCmd.Parameters.Add(new SqlParameter("@DiagnosisDateEnd", now));
}
else
{
//Required for use of between dates
string dateDD = txtDiagnosisDateTo.Text;
DateTime date = Convert.ToDateTime(dateDD);
sqlCmd.Parameters.Add(new SqlParameter("@DiagnosisDateEnd", date));
}
}
//Examination Date Search
if (txtAppointmentDate.Text != "")
{
//Required for use of between dates
string dateED = txtAppointmentDate.Text;
DateTime date = Convert.ToDateTime(dateED);
sqlCmd.Parameters.Add(new SqlParameter("@AppointmentDate", date));
}
if (txtAppointmentDateEnd.Text != "")
{
if (txtAppointmentDateEnd.Text == "*")
{
//Carries out the funtion of the wildcard
DateTime now = DateTime.Now;
sqlCmd.Parameters.Add(new SqlParameter("@AppointmentDateEnd", now));
}
else
{
//Required for use of between dates
string dateAD = txtAppointmentDateEnd.Text;
DateTime date = Convert.ToDateTime(dateAD);
sqlCmd.Parameters.Add(new SqlParameter("@AppointmentDateEnd", date));
}
}
//Age at Examination Search
if (txtAgeAtExamination.Text != "")
{
//Required for use of between dates
string Age = txtAgeAtExamination.Text;
DateTime date = Convert.ToDateTime(Age);
sqlCmd.Parameters.Add(new SqlParameter("@Age", date));
}
if (txtAgeAtExaminationTo.Text != "")
{
if (txtAgeAtExamination.Text == "*")
{
//Carries out the funtion of the wildcard
DateTime now = DateTime.Now;
sqlCmd.Parameters.Add(new SqlParameter("@AgeEnd", now));
}
else
{
//Required for use of between dates
string Age = txtAgeAtExamination.Text;
DateTime date = Convert.ToDateTime(Age);
sqlCmd.Parameters.Add(new SqlParameter("@AgeEnd", date));
}
}
//EXAMINATION CHECKBOXES
//Full-field ERG Checkbox
if (chkERG.Checked)
{
sqlCmd.Parameters.Add(new SqlParameter("@FullField_ERG", chkERG.Checked));
}
//Pattern ERG Checkbox
if (chkPERG.Checked)
{
sqlCmd.Parameters.Add(new SqlParameter("@PatternERG", chkPERG.Checked));
}
//EOG Checkbox
if (chkEOG.Checked)
{
sqlCmd.Parameters.Add(new SqlParameter("EOG", chkEOG.Checked));
}
//Pattern VEP Checkbox
if (chkPVEP.Checked)
{
sqlCmd.Parameters.Add(new SqlParameter("@PatternVEP", chkPVEP.Checked));
}
//Flash VEP Checkbox
if (chkFVEP.Checked)
{
sqlCmd.Parameters.Add(new SqlParameter("@FlashVEP", chkFVEP.Checked));
}
//Comb VEP/ERG Checkbox
if (chkVEPERG.Checked)
{
sqlCmd.Parameters.Add(new SqlParameter("@CombVEP_ERG", chkVEPERG.Checked));
}
//Binoc PVEP Checkbox
if (chkBPVEP.Checked)
{
sqlCmd.Parameters.Add(new SqlParameter("@BinocPVEP", chkBPVEP.Checked));
}
//ATTENDANCE
if (dpdByAttendance.Text != "")
{
sqlCmd.Parameters.Add(new SqlParameter("@Attended", dpdByAttendance.Text));
}
if (dpdTestedBy.Text != "")
{
sqlCmd.Parameters.Add(new SqlParameter("@TestedBy", dpdTestedBy.Text));
}
//
//Awaiting Technical Report
if (chkAwaitingTechnicalReport.Checked)
{
sqlCmd.Parameters.Add(new SqlParameter("@AwaitingTechnicalReport", chkAwaitingTechnicalReport.Checked));
}
//Feedback Patients
if (chkFeedbackPatients.Checked)
{
sqlCmd.Parameters.Add(new SqlParameter("@FeedbackPatients ", chkFeedbackPatients.Checked));
}
//Interesting Patients
if (chkInterestingPatients.Checked)
{
sqlCmd.Parameters.Add(new SqlParameter("@InterestingPatients", chkInterestingPatients.Checked));
}
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = sqlCmd;
da.Fill(ds, "personal");
DataTable dt = new DataTable();
da.Fill(dt);
//Counts the number of results found
lblResults.Text = "Results Found: " + ds.Tables.Cast<DataTable>().Sum(x => x.Rows.Count).ToString();
//Finally, all results matching the criteria will be placed into the gridview
gvSearch.DataBind();
//Adds the export button if more than zero results are found
if (ds.Tables.Cast<DataTable>().Sum(x => x.Rows.Count) > 0)
{
//imgWord.Visible = true;
imgExcel.Visible = true;
lblExport.Visible = true;
}
Session["CurrentData"] = dt;
}
catch (Exception fe)
{
lblErrors.Text = "Error: " + fe.Message;
}
}
Jede Hilfe ist sehr wertvoll für mich als mich machen sehr frustriert.
Vielen Dank im Voraus
P. S, ich habe in den ganzen Code bearbeitet und hinzugefügt, um zu sehen, ob noch etwas offensichtlich, dass ich verpasst habe.
Haben Sie überprüft, Sie Daten immer aus der Datenbank, wenn Sie debuggen? –
Ich kann mich in das System einloggen, also nehme ich an, dass es eine Verbindung gibt. Glaubst du, es ist ein Verbindungsproblem? @IvanSantiago – karlb123
Sie können einen Haltepunkt an der Zeile 'da.Fill (ds, "personal");'; Starten Sie das Debuggen und überprüfen Sie, ob Sie Daten aus der Datenbank erhalten, wenn Sie an dieser Codezeile vorbeigehen. –