JavaFX Tableview not populating data to column - javafx

I am trying to create a TableView with 1 counter + 4 value columns. But for some unknown reason, columns val3, val4 are not getting populated in the tableview. I have updated the getVal2() method with "val3.get()", and I could see the val3 value in column of Value2. So, I suspect that there is some problem with reading to column Value3. I have also checked the naming convention/camel-casing. It looks fine to me. Can any help me fix this ?
ObservableList<Counters> data = FXCollections.observableArrayList();
Iterator<String> counterIterator = counterMap.keySet().iterator();
while(counterIterator.hasNext()) {
String counter = counterIterator.next();
String[] values = counterMap.get(counter);
String val1 = "a", val2 = "b", val3 = "c", val4 = "";
Counters counters = new Counters(counter, val1, val2, val3, val4);
data.add(counters);
}
TableView<Counters> table = new TableView<Counters>();
table.setEditable(true);
TableColumn<Counters, String> counter = new TableColumn<Counters, String>("Counter");
counter.setCellValueFactory(new PropertyValueFactory<Counters, String>("counter"));
TableColumn<Counters, String> val1 = new TableColumn<Counters, String>("Value1");
val1.setCellValueFactory(new PropertyValueFactory<Counters, String>("val1"));
TableColumn<Counters, String> val2 = new TableColumn<Counters, String>("Value2");
val2.setCellValueFactory(new PropertyValueFactory<Counters, String>("val2"));
TableColumn<Counters, String> val3 = new TableColumn<Counters, String>("Value3");
val3.setCellValueFactory(new PropertyValueFactory<Counters, String>("val3"));
TableColumn<Counters, String> val4 = new TableColumn<Counters, String>("Value4");
val3.setCellValueFactory(new PropertyValueFactory<Counters, String>("val4"));
table.getColumns().add(counter);
table.getColumns().add( val1);
table.getColumns().add( val2);
table.getColumns().add( val3);
table.getColumns().add( val4);
table.setItems(data);
public static class Counters {
private SimpleStringProperty counter, val1, val2, val3, val4;
public Counters(String counter, String val1, String val2, String val3, String val4) {
this.counter = new SimpleStringProperty(counter);
this.val1 = new SimpleStringProperty(val1);
this.val2 = new SimpleStringProperty(val2);
this.val3 = new SimpleStringProperty(val3);
this.val4 = new SimpleStringProperty(val4);
}
public String getCounter() {
return counter.get();
}
public void setCounter(String counter) {
this.counter.set(counter);
}
public String getVal1() {
return val1.get();
}
public void setVal1(String val1) {
this.val1.set(val1);
}
public String getVal2() {
return val2.get();
}
public void setVal2(String val2) {
this.val2.set(val2);
}
public String getVal3() {
return val3.get();
}
public void setVal3(String val3) {
this.val3.set(val3);
}
public String getVal4() {
return val4.get();
}
public void setVal4(String val4) {
this.val4.set(val4);
}
}

You have a copy-paste typo in
TableColumn<Counters, String> val4 = new TableColumn<Counters, String>("Value4");
val3.setCellValueFactory(new PropertyValueFactory<Counters, String>("val4"));
Should be
TableColumn<Counters, String> val4 = new TableColumn<Counters, String>("Value4");
val4.setCellValueFactory(new PropertyValueFactory<Counters, String>("val4"));
and val4 is always val4 = "" thats why it looks like they both are empty

Related

Oracle "UPDATE" command returns 0 rows affected in my ASP .NET application but the SQL statement itself works in PL/SQL

I have this ASP.NET project working with Oracle, I have the following code for operating the DB:
public int cmd_Execute_Orcl(string strSql, params OracleParameter[] paramArray)
{
OracleCommand myCmd = new OracleCommand();
try
{
myCmd.Connection = myOrclConn;
myCmd.CommandText = strSql;
foreach (OracleParameter temp in paramArray)
{
myCmd.Parameters.Add(temp);
}
ConnectionManage(true);
int i = myCmd.ExecuteNonQuery();
myCmd.Parameters.Clear();
return i;
}
catch (Exception ex)
{
throw (ex);
}
finally
{
myCmd.Dispose();
ConnectionManage(false);
}
}
"ConnectionManage()" turns on or off the connection, the following code is from data access layer of the program:
public string Edit_DAL(string id, string jh, string jz, string jd, string wd, string gzwz, string qxlx, string sx, string jx, string jb, string cfdd, string zjqssj, string zjzzsj, string bz)
{
string sql = "update JH set jh = :jh, jz = :jz, wd = :wd, jd = :jd, gzwz = :gzwz, qxlx = :qxlx, sx = :sx, jx = :jx, jb = :jb, cfdd = :cfdd, zjqssj = TO_DATE(:zjqssj, 'yyyy-mm-dd hh24:mi:ss'), zjzzsj = TO_DATE(:zjzzsj, 'yyyy-mm-dd hh24:mi:ss'), bz = :bz where ID = :idy";
string result = null;
{
String[] temp1 = zjqssj.Split('/');
String[] temp2 = zjzzsj.Split('/');
string tempString = "";
if (temp1[2].Length < 2)
{
temp1[2] = temp1[2].Insert(0, "0");
}
for (int i = 0; i < temp1.Length; i++)
{
if (i != 0)
{
temp1[i] = temp1[i].Insert(0, "/");
}
tempString += temp1[i].ToString();
}
zjqssj = tempString;
tempString = "";
if (temp2[2].Length < 2)
{
temp2[2] = temp2[2].Insert(0, "0");
}
for (int i = 0; i < temp2.Length; i++)
{
if (i != 0)
{
temp2[i] = temp2[i].Insert(0, "/");
}
tempString += temp2[i].ToString();
}
zjzzsj = tempString;
tempString = "";
}
OracleParameter[] pars ={
new OracleParameter(":idy",id),
new OracleParameter(":jh",jh),
new OracleParameter(":jz",jz),
new OracleParameter(":jd",jd),
new OracleParameter(":wd",wd),
new OracleParameter(":gzwz",gzwz),
new OracleParameter(":qxlx",qxlx),
new OracleParameter(":sx",sx),
new OracleParameter(":jx",jx),
new OracleParameter(":jb",jb),
new OracleParameter(":cfdd",cfdd),
new OracleParameter(":zjqssj",(zjqssj.Replace('/', '-') + " 00:00:00")),
new OracleParameter(":zjzzsj",(zjzzsj.Replace('/', '-') + " 00:00:00")),
new OracleParameter(":bz",bz)
};
try
{
SqlHelper.cmd_Execute_Orcl(sql, pars);
result = "ok";
}
catch (Exception ex)
{
result = "no" + "=" + ex.Message + "\n" + ex.StackTrace;
}
return result;
}
Here's where the strange thing happens, when I hit this part of the code, there's no exception, it returns 0, no rows affected, all the values of the parameters are normal, with expected value, then I tried to run the command in PL/SQL and it works, the row is correctly updated, delete function is also referencing the same "cmd_Execute_Orcl" method and it works just fine, and for the other object the edit function is working perfectly, I am posting the code below:
public string Edit(string OriginalId, string EditUserAccount, string EditUserName, string EditUserMobile, string EditDeptId, string EditRoleId, string EditRoleName)
{
string sql = "update AuthUser set UserAccount=:EditUserAccount, UserName=:EditUserName, UserMobile=:EditUserMobile, DepartmentId=:EditDeptId, RID=:EditRoleId, RoleName=:EditRoleName where ID=:OriginalId";
OracleParameter[] pars ={
new OracleParameter(":EditUserAccount",EditUserAccount),
new OracleParameter(":EditUserName",EditUserName),
new OracleParameter(":EditUserMobile",EditUserMobile),
new OracleParameter(":EditDeptId",EditDeptId),
new OracleParameter(":EditRoleId",EditRoleId),
new OracleParameter(":EditRoleName",EditRoleName),
new OracleParameter(":OriginalId",OriginalId),
};
try
{
SqlHelper.cmd_Execute_Orcl(sql, pars);
return "ok";
}
catch (Exception ex)
{
string test = ex.Message;
return "no";
}
}
In the expected table, column ID is nvarchar2 with default value of sys_guid(), column ZJQSSJ and column ZJZZSJ is of type date, all other columns are of type varchar2, I have also tried executing "COMMIT" and reformating data for date, but the same problem is still there, plz help...

To retrieve the value from session and assign it to a variable

In the below code i get all the ids in a arraylist and store it in a session in sample.aspx and retrieve the session value in test.aspx.Now i want to assign the project id to DataSet dsField in page load .How can i get that value separately.
sample.aspx
Button btnView = (Button)e.CommandSource;
Label lblProjectId = (Label)btnView.Parent.FindControl("ProjectID");
Label lblBatchID = (Label)btnView.Parent.FindControl("BatchID");
Label lblImageID = (Label)btnView.Parent.FindControl("ImageID");
Label lblReasons = (Label)btnView.Parent.FindControl("Reasons");
Label lblLayerID = (Label)btnView.Parent.FindControl("LayerID");
Label lblStatusID = (Label)btnView.Parent.FindControl("StatusID");
Label lblProcessID = (Label)btnView.Parent.FindControl("ProcessID");
ArrayList SearchUrlValues = new ArrayList();
SearchUrlValues.Add(lblProjectId);
SearchUrlValues.Add(lblBatchID);
SearchUrlValues.Add(lblProjectId);
SearchUrlValues.Add(lblImageID);
SearchUrlValues.Add(lblReasons);
SearchUrlValues.Add(lblLayerID);
SearchUrlValues.Add(lblStatusID);
SearchUrlValues.Add(lblProcessID);
Session["ProjectDetails"] = SearchUrlValues.ToArray();
Response.Write(SearchUrlValues);
test.aspx:
Array SearchUrlValues = (Array)Session["ProjectDetails"];
if (!IsPostBack)
{
DataSet dsField = GetFieldData(10);//how to assign projectid instead of 10
gmasFieldsContr.dtFieldsInfo = dsField.Tables[0];
gmasFieldsContr.EnumTable = dsField.Tables[1];
gmasFieldsContr.RegularExpressionTable = dsField.Tables[3];
gmasFieldsContr.BindData();
}
public DataSet GetFieldData(int iProjectID)
{
try
{
SqlParameter[] SqlParam = new SqlParameter[1];
SqlParam[0] = new SqlParameter("#i_ProjectID", SqlDbType.Int);
SqlParam[0].Value = iProjectID;
return ExecuteQuery(SqlParam, "spGetFieldData");
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString());
}
}
Edited
In Sample.aspx don't store SearchUrlValues as Array
Button btnView = (Button)e.CommandSource;
Label lblProjectId = (Label)btnView.Parent.FindControl("ProjectID");
Label lblBatchID = (Label)btnView.Parent.FindControl("BatchID");
Label lblImageID = (Label)btnView.Parent.FindControl("ImageID");
Label lblReasons = (Label)btnView.Parent.FindControl("Reasons");
Label lblLayerID = (Label)btnView.Parent.FindControl("LayerID");
Label lblStatusID = (Label)btnView.Parent.FindControl("StatusID");
Label lblProcessID = (Label)btnView.Parent.FindControl("ProcessID");
ArrayList SearchUrlValues = new ArrayList();
SearchUrlValues.Add(lblProjectId);
SearchUrlValues.Add(lblBatchID);
SearchUrlValues.Add(lblProjectId);
SearchUrlValues.Add(lblImageID);
SearchUrlValues.Add(lblReasons);
SearchUrlValues.Add(lblLayerID);
SearchUrlValues.Add(lblStatusID);
SearchUrlValues.Add(lblProcessID);
Session["ProjectDetails"] = SearchUrlValues; // Store it as ArrayList
Response.Write(SearchUrlValues);
Then test.aspx, convert Session object to ArrayList;
var SearchUrlValues = (ArrayList)Session["ProjectDetails"];
if (!IsPostBack)
{
var projectId = int.Parse(SearchUrlValues[0].ToString());
DataSet dsField = GetFieldData(projectId);//how to assign projectid instead of 10
gmasFieldsContr.dtFieldsInfo = dsField.Tables[0];
gmasFieldsContr.EnumTable = dsField.Tables[1];
gmasFieldsContr.RegularExpressionTable = dsField.Tables[3];
gmasFieldsContr.BindData();
}
By the way, please note that you're adding lblProjectId twice;
SearchUrlValues.Add(lblProjectId); // First
SearchUrlValues.Add(lblBatchID);
SearchUrlValues.Add(lblProjectId); // Second
Additionally, I would prefer to use an object to store these values in the session.
public class SearchUrlValues
{
public int lblProjectId { get; set; }
public int lblBatchID { get; set; }
public int lblImageID { get; set; }
public int lblReasons { get; set; }
public int lblLayerID { get; set; }
public int lblStatusID { get; set; }
public int lblProcessID { get; set; }
}
Then, instead of arraylist;
var newSearchUrlValues = new SearchUrlValues()
{
lblProjectId = lblProjectId,
lblBatchID = lblBatchID,
lblImageID = lblImageID,
lblReasons = lblReasons,
lblLayerID = lblLayerID,
lblStatusID = lblStatusID,
lblProcessID = lblProcessID
};
Session["ProjectDetails"] = newSearchUrlValues;
And retrieve it like;
var searchUrlValues = (SearchUrlValues)Session["ProjectDetails"];
var projectId = searchUrlValues.lblProjectId;
Try Like This
ArrayList SearchUrlValues = (ArrayList)Session["ProjectDetails"];
if (!IsPostBack)
{
DataSet dsField = GetFieldData(Convert.ToInt32(SearchUrlValues[0].ToString()));
//fetech 1st element of array List
gmasFieldsContr.dtFieldsInfo = dsField.Tables[0];
gmasFieldsContr.EnumTable = dsField.Tables[1];
gmasFieldsContr.RegularExpressionTable = dsField.Tables[3];
gmasFieldsContr.BindData();
}
public DataSet GetFieldData(int iProjectID)
{
try
{
SqlParameter[] SqlParam = new SqlParameter[1];
SqlParam[0] = new SqlParameter("#i_ProjectID", SqlDbType.Int);
SqlParam[0].Value = iProjectID;
return ExecuteQuery(SqlParam, "spGetFieldData");
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString());
}
}

How to read id with loop from list in asp.net

here is my code:
public class ListData
{
public int Id { get; set; }
public int LinkedUserId { get; set; }
}
List<ListData> DataList = new List<LinkData>();
using (SqlConnection SqlConnections = new SqlConnection(Global.con))
using (SqlCommand SqlCommands = new SqlCommand("SELECT Id,LinkedUserID From Users", SqlConnections))
{
SqlConnections.Open();
using (SqlDataReader SqlDataReaders = SqlCommands.ExecuteReader(CommandBehavior.CloseConnection))
{
while (SqlDataReaders.Read())
{
ListData newItem = new ListData();
newItem.Id = SqlDataReaders.GetInt32(0);
newItem.LinkedUserId = SqlDataReaders.GetInt32(1);
DataList.Add(newItem);
}
SqlDataReaders.Close();
}
There is a ListData class there is a two Ids one is Id and sec is LinkedUserId. I want to read both id from ListData and return one by one from running loop. I want to do something like that below:
for (int i = 0; i < DataList .Count; i++)
{
string id = DataList[i].ToString();
}
Does anybody have any idea how can i return value form for loop or using foreach loop?
Thank you
Is it what you need?:
var result = new int[DataList.Count*2];
for (int i = 0; i < DataList.Count; i++)
{
result[i * 2] = DataList[i].Id;
result[i * 2 + 1] = DataList[i].LinkedUserId;
}
foreach (ListData listData in DataList)
{
string id = Convert.ToString(listData.Id);
string linkedUserId = Convert.ToString(listData.LinkedUserId);
}

Editable gridview based on list

Is it possible to create a gridview based on a list? I have the following list:
ID = 1
Name = John
Zip = 33141
ID = 2
Name = Tim
Zip = 33139
I want to be able to create an editable gridview with this list
When i bind it to the grid view, it seems to put everyting in one column, and i can't figure out how to get it to seperate it into different columns
Here is my code for setting the DataSource of the GridView:
DataTable table = ConvertListToDataTable(personList);
GridView1.DataSource = table;
GridView1.DataBind();
static DataTable ConvertListToDataTable(List<string> list)
{
// New table.
DataTable table = new DataTable();
// Get max columns.
int columns = 7;
// Add columns.
for (int i = 0; i < columns; i++)
{
table.Columns.Add();
}
// Add rows.
foreach (var rd in list)
{
table.Rows.Add(rd);
}
return table;
}
Here is an example:
private class Person
{
int m_iID;
string m_sName;
string m_sZip;
public int ID { get { return m_iID; } }
public string Name { get { return m_sName; } }
public string Zip { get { return m_sZip; } }
public Person(int iID, string sName, string sZip)
{
m_iID = iID;
m_sName = sName;
m_sZip = sZip;
}
}
private List<Person> m_People;
private void ConvertListToDataTable(List<Person> People)
{
DataTable table = new DataTable();
DataColumn col1 = new DataColumn("ID");
DataColumn col2 = new DataColumn("Name");
DataColumn col3 = new DataColumn("Zip");
col1.DataType = System.Type.GetType("System.String");
col2.DataType = System.Type.GetType("System.String");
col3.DataType = System.Type.GetType("System.String");
table.Columns.Add(col1);
table.Columns.Add(col2);
table.Columns.Add(col3);
foreach (Person person in People)
{
DataRow row = table.NewRow();
row[col1] = person.ID;
row[col2] = person.Name;
row[col3] = person.Zip;
table.Rows.Add(row);
}
GridView1.DataSource = table;
GridView1.DataBind();
}

When using the Grid-view(on devexpress -visual c#), how do I get the values of four fields of a record when I click on that record/row?

I want to get the values of four fields of a record and later use them in an sql statement. How can I get those 4 values when I click a row/record in gridview and have each value stored in their own declared variables?
The four field names are course_abbreviation, course_name, month_of_admission and year_of_admission.
public LecturerForm(string lecturer_firstname, string lecturer_lastname, string lecturer_id)
{
InitializeComponent();
string lecturer = lecturer_firstname + " " + lecturer_lastname;
lblname.Text = lecturer;
string lecID = lecturer_id;
string connetionString = null;
SqlConnection cnn;
connetionString = "Server=localhost\\SQLEXPRESS;Integrated security=SSPI;database=jms";
SqlDataAdapter sda = new SqlDataAdapter("Select unit_code, unit_name, course_abbreviation, course_name, group_name from units_allocation where national_id='" + lecID + "' ", connetionString);
cnn = new SqlConnection(connetionString);
DataTable dt4 = new System.Data.DataTable();
sda.Fill(dt4);
gridControl1.DataSource = dt4;
gridView1.Columns[0].Caption = "Unit Code";
gridView1.Columns[1].Caption = "Unit Name";
gridView1.Columns[2].Caption = "Course Abbr.";
gridView1.Columns[3].Caption = "Course Name";
gridView1.Columns[4].Caption = "Group";
}
private void gridView1_RowClick(object sender, RowClickEventArgs e)
{
//code to get values of four fields and store in four variables...(i.e from the question)
}
In the GridView.RowClick event there is the e.RowHandle argument which you can use to identify a clicked row. Then, use the GridView.GetRowCellValue method to get a cell value of that row.
object val1;
object val2;
object val3;
object val4;
private void gridView1_RowClick(object sender, RowClickEventArgs e) {
int rowHandle = e.RowHandle;
val1 = gridView1.GetRowCellValue(rowHandle, gridView1.Columns[0]);
val2 = gridView1.GetRowCellValue(rowHandle, gridView1.Columns[1]);
val3 = gridView1.GetRowCellValue(rowHandle, gridView1.Columns[2]);
val4 = gridView1.GetRowCellValue(rowHandle, gridView1.Columns[3]);
}
To avoid problems that occur when columns are dragged into different positions it is usually better to reference by name.
object val1;
object val2;
object val3;
object val4;
private void gridView1_RowClick(object sender, RowClickEventArgs e) {
int rowHandle = e.RowHandle;
val1 = gridView1.GetRowCellValue(rowHandle, "course_abbreviation");
val2 = gridView1.GetRowCellValue(rowHandle, "course_name");
val3 = gridView1.GetRowCellValue(rowHandle, "month_of_admission");
val4 = gridView1.GetRowCellValue(rowHandle, "year_of_admission");
}

Resources