JT_SIRO
asked on
Unable to update an asp.net label text property
I have a function that populates a grid from searching for files in a directory. I pass the function a search text string to filter by (so the user can enter search text to filter by in textbox called txtSearch). This works fine on page load. It populates the grid and updates a record count label called lblCount.
When I filter by some search text, it updates the grid with the correct records, but it does not update the label control. It simply stays the same as the full search count. e.g., these first 2 lines work fine, but the last doesn't do anything, even when I step through:
gvTracks.DataSource = dtFiles;
gvTracks.DataBind();
lblCount.Text = counter.ToString(); // !!!THIS REFLECTES THE FILTERED REC COUNT WHEN I STEP THROUGH, BUT IT DISPLAYS THE COUNT OF ALL RECS SOMEHOW!!!
When I filter by some search text, it updates the grid with the correct records, but it does not update the label control. It simply stays the same as the full search count. e.g., these first 2 lines work fine, but the last doesn't do anything, even when I step through:
gvTracks.DataSource = dtFiles;
gvTracks.DataBind();
lblCount.Text = counter.ToString(); // !!!THIS REFLECTES THE FILTERED REC COUNT WHEN I STEP THROUGH, BUT IT DISPLAYS THE COUNT OF ALL RECS SOMEHOW!!!
// Here's my label control in the aspx page:
Tracks:<asp:Label ID="lblCount" runat="server" Text="Label"></asp:Label>
// Here's my function that populates the grid and counts records - again, the variable intCount, calculates correctly when I step through, but doesn't reflect on the label control
protected void fillGrid(string SearchText)
{
DataTable dtFiles = new DataTable();
DataColumn dc;
bool isCleanFilename = true;
int counter = 0;
// Initialize lblCount
lblCount.Text = "INIT";
// File Name
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "Filename";
dtFiles.Columns.Add(dc);
// Username
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "Username";
dtFiles.Columns.Add(dc);
// Status
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "Status";
dtFiles.Columns.Add(dc);
// Notes
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "Notes";
dtFiles.Columns.Add(dc);
// Directory
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "Directory";
dtFiles.Columns.Add(dc);
// Add the row - loop through file list
DataRow row;
// Get usernames, compare for existence in Composers folders, then loop through them all, and dump files into DataTable
string[] roles = new string[] { "SH_COMP", "SH_ADMIN", "SH_SUPER" };
MembershipUserCollection mc = Membership.GetAllUsers(); //FindUsersByRole(roles);
foreach (MembershipUser u in mc)
{
DirectoryInfo di = new DirectoryInfo("C:\\FTP\\Composers" + "\\" + u.UserName.ToString());
if (di.Exists)
{
FileInfo[] rgFiles = di.GetFiles("*.wav");
foreach (FileInfo fi in rgFiles)
{
isCleanFilename = true;
// Check the file that they uploaded for invalid characters
if (fi.Name.IndexOf(":") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("*") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("?") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("<") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf(">") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("|") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("#") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("&") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("!") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("+") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("[") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("]") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("{") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("}") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf("(") > 0) { isCleanFilename = false; }
if (fi.Name.IndexOf(")") > 0) { isCleanFilename = false; }
row = dtFiles.NewRow();
row["FileName"] = fi.Name;
row["Directory"] = fi.Directory.ToString().Replace("\\" + Profile.UserName, "");
row["Username"] = u.UserName.ToString();
if (isCleanFilename)
{
row["Status"] = "GOOD";
row["Notes"] = ""; // put notes text box value here
}
else
{
row["Status"] = "INVALID FILENAME";
}
// Check for MP3 - give notice to run the converter, if not there
if (!File.Exists("c:/Purg MP3s/" + fi.Name.Replace(".wav", ".mp3")))
row["Status"] = "MP3 File not created. ";
// If SearchText (txtSearch) has a value, filer results
if (SearchText != "...Search")
{
if (u.UserName.ToString().ToLower().IndexOf(SearchText.ToLower()) > -1 || fi.Name.ToLower().IndexOf(SearchText.ToLower()) > -1)
{
dtFiles.Rows.Add(row);
counter = counter + 1;
}
}
else // Add all
{
dtFiles.Rows.Add(row);
counter = counter + 1;
}
}
}
}
gvTracks.DataSource = dtFiles;
gvTracks.DataBind();
lblCount.Text = counter.ToString(); // !!!THIS REFLECTES THE FILTERED REC COUNT WHEN I STEP THROUGH, BUT IT DISPLAYS THE COUNT OF ALL RECS SOMEHOW!!!
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
HEY! I just decided to wrap my label control in the same update panel that my grid is in and it worked! Can you offer any insight into why? I suspect it's because I had triggers in the UpdatePanel that surrounded my grid, that didn't communicate with controls outside of it. Is that correct? Even thought my codebehind appeared to set the label values correctly... Must be.
I didn't really want to include my label or the buttons in the UpdatePanel because they are up near the header of my page, so I could disable the grid on postback. Now I guess I'll disable the whole panel on postback, so the user can't click anything.... I think..... uggg, programming is hard..
I didn't really want to include my label or the buttons in the UpdatePanel because they are up near the header of my page, so I could disable the grid on postback. Now I guess I'll disable the whole panel on postback, so the user can't click anything.... I think..... uggg, programming is hard..
ASKER
Open in new window